pg_dump:[archiver(db)]与数据库的连接" dbase"失败:致命:用户" postgres"对等身份验证失败

时间:2016-02-10 12:09:21

标签: postgresql

解决:我在家里添加了.pgpass。

我有一句话:

host    all             all             127.0.0.1/32            md5

在/etc/postgresql/9.4/main/pg_hba.conf中,但是当我运行时:

#pg_dump -U postgres dbase -f dbase.sql

我明白了:

pg_dump: [archiver (db)] connection to database "dbase" failed: FATAL: Peer authentication failed for user "postgres"

3 个答案:

答案 0 :(得分:20)

您遇到的问题是,如果您不定义主机,您的系统将决定。

显式添加“-h localhost”,这将修复它

答案 1 :(得分:0)

如果添加-h localhost不起作用,则可以尝试添加-h 127.0.0.1

pg_dump -h 127.0.0.1 -U <username> -d <database_name> -W > bk_name.sql

答案 2 :(得分:0)

在Ubuntu 20.04上的PostgreSQL数据库上工作时遇到此问题。

所有PostgreSQL配置都很好,并且运行良好。

问题是我错误地将服务器上PostgreSQL文件和所有其他文件的所有权修改为名为deploy的用户。

因此,每次我尝试运行pg_dump操作时都会失败,并显示以下错误:

pg_dump: [archiver (db)] connection to database "dbase" failed:
FATAL: Peer authentication failed for user "postgres"

这是我的解决方法

我在新的VPS上安装并设置了另一个PostgreSQL数据库服务器。

接下来,我在旧服务器中备份了PostgreSQL数据目录:

sudo cp /var/lib/postgresql/12/main /var/lib/postgresql/12/main.bk

然后将备份复制到新服务器中,然后用它替换新服务器中的PostgreSQL数据目录。也就是说,我将新服务器中的PostgreSQL数据目录移出,并将旧数据库的PostgreSQL数据目录备份复制到其中。您可能需要在某个时候切换到PostgreSQL用户(sudo -u postgres -i)来执行某些操作:

sudo systemctl stop postgresql
sudo mv /home/your-username/main.bk /var/lib/postgresql/12/main
sudo -u postgres -i
sudo mv /var/lib/postgresql/12/main /var/lib/postgresql/12/main.bk2
sudo mv /var/lib/postgresql/12/main.bk /var/lib/postgresql/12/main

最后,我在新服务器中重新启动了PostgreSQL数据库服务器:

sudo systemctl restart postgresql

这次,当我尝试在新服务器上运行pg_dump操作时,它运行良好。

仅此而已。

我希望这会有所帮助