web-dev-qa-db-ja.com

リモートpostgresqlデータベースに接続できません

リモートのPSQLデータベースに接続しようとしています。クライアントのIPアドレスを含むpg_hba.confエントリを追加する前に、エラーメッセージが表示されました。

xdev@xdevbox:~$ psql -U postgres testdb -h 10.1.1.47
psql: FATAL:  no pg_hba.conf entry for Host "10.201.50.71", user "postgres", database "testdb", SSL off

信頼設定でクライアントのIPを追加しました。また、サーバーのpostgres.confのリッスンアドレスを変更して「*」をリッスンしました。次に、/ etc/init.d/postgresql restartコマンドを使用してデータベースサーバーを再起動しました。

接続しようとすると、次のエラーメッセージが表示されます。

psql: could not connect to server: Connection refused
    Is the server running on Host "10.1.1.47" and accepting
    TCP/IP connections on port 5432?

postgresql.confでは、ポートは5432に設定されています。他に何をチェックすればよいかわかりません。

ありがとう

17
dot

次の2つのファイルを設定する必要があります

pg_hba.conf

Host all all 0.0.0.0/0 md5

postgresql.conf

listen_addresses='*'

ポート5432が開いているかどうかを確認する必要があります: http://www.yougetsignal.com/tools/open-ports/

そうでない場合は、iptablesにルールを追加します。

iptables -A INPUT -s 0/0 -p tcp --dport 5432 -j ACCEPT

0/0:誰かにアクセスしてもらいたい場合。特定のIPアドレスまたはIPアドレスの範囲に変更できます。

23
Danish Khakwani

使用に同意しません

Host all all 0.0.0.0/0 md5

データベースがインターネットに公開されている場合。私のプロジェクトでは、postrgresはクラウドにあり、バックエンドから使用されます。メンテナンスのためだけにデータベースに直接接続する必要があります。パブリックIPからデータベースに接続します(1.2.3.4など)。この場合、正しいエントリは次のとおりです。

Host mybackend myuser 1.2.3.4/0 md5

IPアドレスの後ろの「/ 0」に注意してください。 「/ 0」がないと、「接続拒否エラー」を受け取ります。

ホワイトリストのデータベース名、データベースユーザー、IPアドレスを指定して、データベースへのアクセスを制限することをお勧めします。開発環境でない限り、「ALL」を使用しないでください。

バイバイ!

0