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データベースに接続できるようになるはず。

前へ

「アルティメット ヒッツ ドラゴンクエストIX 星空の守り人」がまだ届かない

次へ

今日からドラゴンクエスト9のWi-Fiショッピングは「ホワイトデー アンド フレッシュセール」