PostgreSQLのエラー「psql: FATAL: Ident authentication failed for user "postgres"」の解消方法〜PHPでDB接続に失敗する場合〜
コンソール画面でpsql -U postgresが利用できるようになっても、PHPでDB接続できない場合がある。
その時に、PostgreSQLのログを見てみると(Linuxなら/var/lib/pgsql/data/pg_logなどログがある)、以下のようなエラーが出ている。
LOG: could not connect to Ident server at address "127.0.0.1", port 113: 接続を拒否されました
FATAL: Ident authentication failed for user "postgres"
この場合、pg_hba.confの設定を変更すると接続できるようになる。
/var/lib/pgsql/data/pg_hba.conf
-----------------------------------------------------------------------------------------------------
# IPv4 local connections:
host all all 127.0.0.1/32 ident sameuser
-----------------------------------------------------------------------------------------------------
PostgreSQL 8.xのインストール直後だと上記のようになっているので、「ident sameuser」を「trust」に変更する。。(「trust」は無条件でデータベース接続を許可するため、セキュリティを考慮する場合は、「trust」を「password」などにする。)
-----------------------------------------------------------------------------------------------------
# IPv4 local connections:
host all all 127.0.0.1/32 trust
-----------------------------------------------------------------------------------------------------
PostgreSQLサービスを再起動したら、PHPからPostgreSQLデータベースに接続できるようになるはず。