我试图将数据文件dvdrental.tar
加载到PostgreSQL中的数据库dvdrental
中。
错误:
pg_restore: [archiver (db)] connection to database "dvdrental" failed: FATAL: Peer authentication failed for user "postgres"
我运行的命令:
$ cd /usr/lib/postgresql/10/bin
$ pg_restore -U postgres -d dvdrental /home/pranav/Documents/DVDRentalDB/dvdrental.tar -W
答案 0 :(得分:0)
您有两个选择:
以操作系统用户postgres
的身份运行命令。
在peer
文件中将身份验证方法更改为pg_hba.conf
之外的其他方法,然后重新加载PostgreSQL。
答案 1 :(得分:0)
在我的情况下,我已经以另一种方式配置了/etc/postgresql/12/main/pg_hba.conf
:
# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access. Records take one of these forms:
#
# local DATABASE USER METHOD [OPTIONS]
# host DATABASE USER ADDRESS METHOD [OPTIONS]
# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
hostssl dvdrental,flights,demo all 192.168.1.5/24 trust
hostssl dvdrental,flights,demo all 128.131.232.29/32 trust
host all all 192.168.1.0/24 md5
local all postgres peer
我不是postgres配置方面的专家,但是在遵循this guide的情况下一直在寻找相同的东西,但是使用ubuntu作为操作系统。
之后,我重新启动了postgre服务:
sudo systemctl restart postgresql*
然后我能够执行下一条命令而不会出现身份验证错误:
sudo -u postgres pg_restore -c -U postgres -d dvdrental -v /tmp/dvdrental.tar -W
如您所见,我已将dvdrental.tar
文件复制到/tmp
目录,因此postgres
用户可以使用它,该用户无法访问您的{{1} }目录。最好不要使用目录权限。最好将所需文件复制到/home/youruser
文件夹中,然后从那里使用它们。