psql: could not connect to server: Connection refused Is the server running on host "hoge" and accepting TCP/IP connections on port 5432?
ポート5432は空いてるか?
そもそもポートが空いてないと通信できません。iptablesやファイアーウォールの設定を確認してポートを空けましょう。
ポートが空いてるかは、クライアントマシンからtelnetで確認できます。
クライアントマシンで
$ telnet serverhoge 5432
Trying xx.xxx.x.xxx...
telnet: connect to address xx.xxx.x.xxx: Connection refused
"Connection refused"と出る場合は、サーバ側のポートが閉じていると考えられます。ポートを空けてやると、エラー表示が下記のように"No route to host"になるはずです。
$ telnet serverhoge 5432
Trying xx.xxx.x.xxx...
telnet: connect to address xx.xxx.x.xxx: No route to host
postgresql.confの設定
デフォルトではlisten_addressが"localhost"になっているので、他ホストからのアクセスは受け付けていないです。Listen対象にサーバのIPアドレスを追加しましょう。
listen_addresses = 'localhost,10.100.123.456'
※クライアントのIPを書くのではなくて、サーバのIPを書きます。
pg_hba.confの設定
pg_hba.confを編集して、認証方式、DB名、ユーザ名、IPアドレスなどを設定します。詳細な設定方法は公式マニュアルを見てください。
下記はあくまで一例です。
#クライアント10.100.111.111からのTCP接続を許可する
host all all 10.100.111.111/32 md5
サーバの再起動
/etc/init.d/postgresql restart
カテゴリ:
PostgreSQL