web-dev-qa-db-ja.com

Postgresql接続がタイムアウトしました

リモートサーバーで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が成功します。

私は何を間違っていますか?

1
Clyde

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などのファイアウォールがないことを確認します。
3
Dmitry Savinkov

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
1
chloesoe