起きたこと
以下のようなエラーが発生
psql: FATAL: Peer authentication failed for user "postgres"
原因
postgreSQLのhbaファイル(host base authentication)機能で、peer認証がOnになっていたから。
peer認証はローカルでアクセスする時Linuxのユーザーとパスワードがpostgresと同じものでないとエラーになるそうです。
対処法
peer認証をOffにします。
まずpeer認証をしているファイル、pg_hba.conf
を探します。
$ find / -print |grep pg_hba.conf
-> /var/lib/pgsql/data/pg_hba.conf
vimを使ってファイルを編集しましょう
$ vim /var/lib/pgsql/data/pg_hba.conf
下にスクロールして以下のように表示されている場所を探します。
pg_hba.conf
# 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 ident
# IPv6 local connections:
host all all ::1/128 ident
これを以下のように編集します。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
その後postgreSQLを再起動
$ service postgresql restart
すると以下のように接続できるようになりました。
psql -q -U postgres
参考