将数据加载到PostgreSQL时出现“对等身份验证失败”错误

时间:2019-10-03 07:58:48

标签: postgresql ubuntu psql pg-restore

我试图将数据文件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

2 个答案:

答案 0 :(得分:0)

您有两个选择:

  1. 以操作系统用户postgres的身份运行命令。

  2. 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文件夹中,然后从那里使用它们。