リモートサーバーでpsqlに接続しているとき
>psql -h {hostname}
psql: could not connect to server: Connection timed out (0x0000274C/10060). Is the server running on Host "{hostname}" (194.58.98.133) and accepting TCP/IP connections on port 5432?
サーバー上:
netstat -nlp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 29609/postmaster
tcp 0 0 :::5432 :::* LISTEN 29609/postmaster
unix 2 [ ACC ] STREAM LISTENING 2107633273 29609/postmaster /tmp/.s.PGSQL.5432
サーバーにiptablesがありません。サーバーへのpingが成功します。
私は何を間違っていますか?
pg_hba.conf
またはAWSセキュリティグループが適切に設定されていない場合、この種のエラーが発生していました。これを解決する方法についてはたくさんのドキュメントがあります。例えば、これから引用された以下をチェックできます link
エラー:psql:サーバーに接続できませんでした:接続が拒否されましたサーバーはホスト "192.168.0.1"で実行されており、ポート5432でTCP/IP接続を受け入れていますか?
一般的な原因:ポストマスターまたはPostgreSQLのサーバーデーモンプロセスが実行されていないか、正しく構成されていません。
ほとんどの場合、このエラーが表示されるのは、TCP/IP接続を許可するようにPostgreSQLが設定されていないか、少なくとも特定のワークステーションからの接続がないためです。接続しようとしているホストで
postmaster
が実際に実行されていることを確認した場合、この問題の一般的な原因のリストを次に示します。
postgresql.conf
TCP/IP接続を許可するように設定されていません。listen_address
構成パラメーターを確認することをお勧めします。postgresql.conf
は、非標準のポート番号での接続を許可するように設定されていません。これを判断するには、port
構成オプションを確認してください。- postgreSQLのアクセス構成ファイル(
pg_hba.conf
)の認証ルールは、ユーザーまたはIPアドレスのいずれかがそのデータベースに接続できるように設定されていません。pg_hba.conf
を適切に設定する方法の詳細については、 公式ドキュメント を参照してください。- ローカルシステムがリモートホストへの接続を確立できないようにする
iptables
などのファイアウォールがないことを確認します。
postgresql.confをご覧ください。どこからでも接続できるようにするには、listen_adressesを*に設定する必要があります。
listen_addresses = '*'
pg_hba.confには、ネットワークからの接続を許可するために、そのようなエントリが必要です。
# IPv4 local connections:
Host all all 127.0.0.1/32 md5
Host all all 192.168.190.0/24 md5