[英]pg_dump connection to database “db_name” failed: FATAL: Peer authentication failed for user “postgres”
[英]PostgreSQL: pg_dump: [archiver (db)] connection to database "dbase" failed: FATAL: Peer authentication failed for user "postgres"
解決:我在家里添加了.pgpass。
我有這條線:
host all all 127.0.0.1/32 md5
在 /etc/postgresql/9.4/main/pg_hba.conf 但當我運行時:
我得到:
pg_dump: [archiver (db)] 連接到數據庫“dbase”失敗:
致命:用戶“postgres”的對等身份驗證失敗
您遇到的問題是,如果您不定義主機,您的系統將決定。
顯式添加“-h localhost”,這將修復它
如果添加 -h localhost 不起作用,您可以嘗試添加 -h 127.0.0.1
pg_dump -h 127.0.0.1 -U <username> -d <database_name> -W > bk_name.sql
我在 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
操作時,它運行良好。
就這樣。
我希望這有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.