QA@IT

psqlがPeer authentication failedというエラーで起動できない

20944 PV

postgresユーザでpsqlを起動したいのですが、以下のようなエラーになってしまいます。

$ psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

回答

postgresのhba (host base authentication) 機能で、peer認証がオンになっているようです。
peer認証では、ユーザ名がUnixのユーザ名と一致していないとエラーになります。
http://www.postgresql.jp/document/9.1/html/auth-methods.html#AUTH-PEER

pg_hba.conf (私の環境では /etc/postgresql/9.1/main/ 以下にありました) を確認します。

local   all             postgres                                peer

例えば上記の行を以下のように変更してpostgresqlを再起動することで、Unixのpostgresユーザ以外でもpostgresユーザでログインできるようになります。

local   all             postgres                                md5
編集 履歴 (0)

pg_hba.conf で Debian 系のデフォルトの以下の設定になっていると仮定します。

# Database administrative login by UNIX sockets
local   all         postgres                          ident

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

ident は yhara さんの回答にあるように unix user と同じ名前を使っての認証になっています。
別途パスワードを設定しているのなら ident になっている Unix domain socket ではなく IPv6 か IPv6 で接続すれば良いので、 psql -h localhost のように -h オプションを指定すれば良いと思います。

編集 履歴 (0)
  • 投稿した後で、 `Peer authentication failed` と書いてあるので、 ident 認証でひっかかっている訳ではなさそうな気がしてきました。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。