PostgreSQLでIPv6のリッスンを無効にしたい場合の対処 †CentOS6にyumコマンドを利用してPostgreSQLをインストールしました。 [sakura@centos6 ~]$ psql -h localhost psql: FATAL: ホスト"::1"、ユーザ"sakura"、データベース"sakura、SSL無効用のエントリがpg_hba.confにありません。 以前、公開した以下のリンクの通り、pg_hba.confを修正済みです。 以下、調査した内容を記します。 関連記事 †使用環境 †
netstatコマンドで5432ポートを確認してみると… †IPv4, IPv6のlocalhostをLISTENしているのが確認できました。 [root@centos6 ~]# netstat -ant | grep 5432 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 ::1:5432 :::* LISTEN psqlのエラー出力をみてみると… †ホストが "::1"となっています。 [sakura@centos6 app]$ psql -h localhost psql: FATAL: ホスト"::1"、ユーザ"sakura"、データベース"sakura、SSL無効用のエントリがpg_hba.confにありません。 IPv6でも接続できるようにpg_hba.confを修正する †本資料では、IPv6を無効化する方法を記述することにしていますが、一応pg_hba.confを修正してIPv6で接続できるようにしてみました。
postgresql.confを修正してIPv4のローカルホストのみListenするようにする †以下は、pg_hba.confの修正は行っていません。 CentOS6にyumコマンドでインストールしたpotgresql.confのlisten_addressesの設定は以下のようにlocalhostになっていました。 # - Connection Settings - listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart) これを以下のように変更し保存し、PostgreSQLを再起動します。 listen_addresses = '0.0.0.0' また、pg_hba.confの設定は以前公開した「localhostを指定すると接続できない場合の対処方法」と同じにしてあります。 # IPv4 local connections: host all all 127.0.0.1/32 trust psqlコマンドで接続してみます。 [sakura@centos6 ~]$ psql -h localhost psql (8.4.13) "help" でヘルプを表示します. sakura=# netstatコマンドでポート状態を確認してみます。 [root@centos6 ~]# netstat -ant | grep 5432 tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:5432 127.0.0.1:38286 ESTABLISHED tcp 0 0 127.0.0.1:38286 127.0.0.1:5432 ESTABLISHED 0.0.0.0:*と上記のpsqlコマンドで接続した状態が確認できます。 [root@centos6 ~]# netstat -ant | grep 5432 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:38288 127.0.0.1:5432 TIME_WAIT 以上、PostgreSQLをIPv4でlocalhostに接続する方法を記述しました。 |