解决:我在家里添加了.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"
答案 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
操作时,它运行良好。
仅此而已。
我希望这会有所帮助