Postgresql
psql:致命:使用者的對等身份驗證失敗
我剛剛在 Ubuntu 15.10 上安裝了 PostgreSQL 9.4。
- 我創建了一個使用者
createuser -P myuser
- 我創建了一個數據庫
createdb -O myuser mydatabase
- 我編輯
pg_hba.conf
並添加local mydatabase myuser md5
- 我重新啟動了 PostgreSQL
sudo service postgresql restart
使用者myuser只是 PostgresSQL 使用者,在 Ubuntu 上沒有使用者帳戶。
當我嘗試使用它連接到數據庫時,
psql -W mydatabase myuser
它會失敗並顯示psql: FATAL: Peer authentication failed for user "myuser"
.PostgreSQL 正在執行……
● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Thu 2016-03-03 09:53:00 CET; 9min ago Process: 22219 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 22219 (code=exited, status=0/SUCCESS) Mar 03 09:53:00 SERVER01 systemd[1]: Starting PostgreSQL RDBMS... Mar 03 09:53:00 SERVER01 systemd[1]: Started PostgreSQL RDBMS.
……聽。
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:postgresql *:* LISTEN tcp6 0 0 localhost:postgresql [::]:* LISTEN Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 151534 /var/run/postgresql/.s.PGSQL.5432
我需要做什麼才能將使用者myuser連接到數據庫mydatabase?
在幾天前的全新安裝中,我的第二行
pg_hba.conf
是local all all peer
我相信這是使您的連接嘗試失敗的原因。
規則的順序在這裡很重要:將考慮與訪問方法、使用者名、數據庫名稱和源 IP 範圍匹配的第一個規則。如果失敗,則沒有第二次嘗試,因此連接嘗試可能會失敗。或者,正如文件所述:
沒有“fall-through”或“backup”:如果選擇了一條記錄並且認證失敗,則不考慮後續記錄。如果沒有記錄匹配,則拒絕訪問。
解決方案很簡單:如果您不打算使用
peer
身份驗證,請刪除上述行,或者將您的特定規則移到這一行之上。