pg_dump:archiver(db)一種rCH一世在和r(db)archiver (db)與數據庫的連接失敗:致命:使用者“postgres”的對等身份驗證失敗
我正在嘗試將我的 Postgres 數據庫備份到另一台伺服器,但我一直被拒絕訪問。
我的 pg_hba.conf 文件如下所示:
# DO NOT DISABLE! # If you change this first entry you will need to make sure that the # database superuser can access the database using some other method. # Noninteractive access to all databases is required during automatic # maintenance (custom daily cronjobs, replication, and similar tasks). # # Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 md5 #host replication postgres ::1/128 md5
如果我將 postgres 設置從 PEER 更改為 TRUST,我可以備份程式碼,但網站無法再訪問數據庫(關於 SSL 錯誤,我知道這不是問題)。
當我保持原樣時,PEER,伺服器工作 - php可以訪問數據庫 - 但在嘗試執行備份時出現錯誤:
根> pg_dump -U postgres 表名> test.sql
.pg_dump:
$$ archiver (db) $$與數據庫“tablename”的連接失敗:致命:使用者“postgres”的對等身份驗證失敗。 PHP Apache Web 站點使用適當的使用者名和密碼。
備份腳本如下所示:pg_dump -U postgres tablename > test.sql
我怎樣才能同時滿足網站和備份腳本,以便我可以同時執行它們?
嘗試的整個腳本是這樣的: ssh SERVER “pg_dump -U postgres tablename| gzip -c” > /backup/sqlbackup.sql.gz
取自伺服器故障:ssh remote command-fu
如果您的 PHP Apache 網站使用
peer
,請保留它,讓我們處理它。1. 第一種方法:
由於身份驗證是基於對等的,因此您必須使用
-h
選項指定主機名(通常是 localhost):ssh server "pg_dump -h localhost -U postgres | gzip -c" >/backup/sqlbackup.sql.gz
這裡的主要問題是系統會提示您輸入 postgres 使用者密碼。這是備份自動化的問題。
您可以參考此內容以避免提示輸入密碼。但我會描述:
- 創建一個名為的隱藏
.pgpass
文件$HOME
- 執行一個
chmod 600 .pgpass
- 編輯文件
.pgpass
並添加這一行:localhost:5432:postgres:postgres:password
2. 第二種方法:
您可以為備份添加特定角色並信任它。
在 Postgres 中創建備份角色:
CREATE ROLE backup WITH LOGIN SUPERUSER PASSWORD 'password'
編輯文件
pg_hba.conf
,添加角色backup
和trust
它:# Database administrative login by Unix domain socket local all postgres peer local all backup trust
重新開始
postgresql
然後您應該能夠使用以下命令執行備份:
ssh server "pg_dump -U backup postgres | gzip -c" >/backup/sqlbackup.sql.gz