簡體   English   中英

PostgreSQL: pg_dump: [archiver (db)] 與數據庫“dbase”的連接失敗:致命:用戶“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 -U postgres dbase -f dbase.sql

我得到:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM