別サーバからPostgreSQLに接続できなかったので、その時の備忘録です。
事象
別のサーバから接続すると下記メッセージで接続ができない。
<メッセージ>
could not connect to server: Connection Refused (0x0000274D/100612)
DBサーバからpsqlコマンドでログインはできる。
netstatコマンドで標準ポート(5432)がLISTENになってる。
firewalldも無効化している。
むむ、一体なぜだ。。
原因①
「/var/lib/pgsql/data/postgresql.conf」のlisten_addresses項目が'locahost'になっていました。
<修正したエントリ>
#listen_addresses = 'localhost'
listen_addresses = '*'
ローカルホストからの問い合わせにしか受け答えない状態になってましたので全体からLISTENする用に修正しました。
原因②
「/var/lib/pgsql/data/pg_hba.conf」に接続エントリがありませんでした。
<追加したエントリ>
host all all IPアドレス/サブネットビット ident
ファイル名の「hba」はhost-based authentication略で、postgresの認証制限することができます。
例えばですが、IPアドレスAから来たBユーザはCデータベースが接続可能などきめ細かい設定ができます。
詳しいエントリの設定値は下記参照ください。
補足
強度なセキュリティ要件が無ければ、IP制限などはfirewallなどで集中管理し、
postgresql側は制限をなくした方がDBやユーザの追加の際に余計な混乱が無いのかもしれません。