Postgresql

psql:致命:使用者的對等身份驗證失敗

  • January 12, 2017

我剛剛在 Ubuntu 15.10 上安裝了 PostgreSQL 9.4。

  1. 我創建了一個使用者createuser -P myuser
  2. 我創建了一個數據庫createdb -O myuser mydatabase
  3. 我編輯pg_hba.conf並添加local mydatabase myuser md5
  4. 我重新啟動了 PostgreSQLsudo 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身份驗證,請刪除上述行,或者將您的特定規則移到這一行之上。

引用自:https://dba.stackexchange.com/questions/131129