web-dev-qa-db-ja.com

「psql:サーバーに接続できませんでした:接続が拒否されました」リモートデータベースに接続するときのエラー

次のコマンドを使用して、リモートサーバーにインストールされたpostgresデータベースに接続しようとしています。

psql -h Host_ip -U db_username -d db_name

これが発生するエラー:

psql:サーバーに接続できませんでした:接続が拒否されましたサーバーはホスト ""で実行されており、ポート5432でTCP/IP接続を受け入れていますか?

  1. Postgresのインストール済みバージョンは9.4です。
  2. ホストオペレーティングシステム:Ubuntu 15.04
  3. クライアントオペレーティングシステム:Centos 7

私はすでに次のことを試しましたが、問題は未解決のままです。

  1. pg_hba.confファイルを編集して含める

すべて0.0.0.0/0 md5をすべてホスト

  1. 「postgresql.conf」を編集し、listenパラメーターを

listen_addresses = '*'

  1. Postgresサービスを再起動しました。
  2. ホストとクライアントのファイアウォールとiptablesを無効にしました。
  3. ローカルでpsqlコマンドを実行して確認したところ、機能していました。
  4. 私はこれで与えられた2番目の解決策を試みました 質問nmapを実行すると、次の出力が得られました。

Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-07 18:08 IST Nmap scan report for 10.17.250.250 Host is up (0.0000040s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http

何か不足していますか。誰かが助けてくれることを願っています。

35
Poonam Anthony
cd /etc/postgresql/9.x/main/

postgresql.confという名前のファイルを開く

Sudo vi postgresql.conf

この行をそのファイルに追加します

listen_addresses = '*'

次に、pg_hba.confという名前のファイルを開きます

Sudo vi pg_hba.conf

このファイルにこの行を追加します

Host  all  all 0.0.0.0/0 md5

暗号化されたパスワードを持つすべてのユーザーのすべてのデータベースへのアクセスを許可します

サーバーを再起動します

Sudo /etc/init.d/postgresql restart
77
Thameem

postgresql.confで定義されているポートを確認します。私のpostgres 9.4のインストールでは、5433の代わりにポート5432を使用します

14
jorge Godoy

Raspberry Piの新しいPostgreSQLインストールにリモートで接続しようとすると、これに苦労しました。この問題を解決するために私がしたことの完全な内訳は次のとおりです。

まず、PostgreSQL構成ファイルを開き、サービスがローカルホストの外部でリッスンすることを確認します。

Sudo [editor] /etc/postgresql/[version]/main/postgresql.conf

nanoを使用しましたが、選択したエディターを使用できます。バージョン9.1をインストールしている間、そのディレクトリはインストールしたバージョンに対応します。

「接続と認証」というタイトルのセクションまで検索します。最初の設定は'listen_addresses'である必要があり、次のようになります。

#listen_addresses = 'localhost'     # what IP address(es) to listen on;

右側のコメントは、このフィールドを変更する方法についての適切な指示を示しており、推奨される'*'をすべて使用するとうまく機能します。

このフィールドは#でコメント化されていることに注意してください。コメントによると、デフォルトは 'localhost'なので、値を'*'に変更するだけでは不十分です。また、先頭の#を削除して、設定のコメントを外す必要があります。

次のようになります。

listen_addresses = '*'         # what IP address(es) to listen on;

次の設定「ポート」をチェックして、正しく接続されていることを確認することもできます。 5432はデフォルトであり、指定しない場合にpsqlが接続を試みるポートです。

ファイルを保存して閉じ、同じディレクトリにあるクライアント認証設定ファイルを開きます。

Sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf

アクセスを制限したい場合はファイルを読むことをお勧めしますが、基本的なオープン接続の場合は、ファイルの下部にジャンプして次のような行を追加します。

Host all all all md5

必要に応じて、スペースの代わりにTabキーを押して、フィールドと既存の列を並べることができます。

個人的に、代わりに次のような行を追加しました。

Host [database_name] pi 192.168.1.0/24 md5

これにより、接続は1人のユーザーとローカルエリアネットワークサブネット上の1つのデータベースのみに制限されます。

ファイルへの変更を保存したら、サービスを再起動して変更を実装する必要があります。

Sudo service postgresql restart

これで、次のコマンドを使用して、サービスが正しいポートでオープンにリッスンしていることを確認できます。

Sudo netstat -ltpn

Sudoを使用して)昇格として実行しない場合、それらのポートでリッスンしているプロセスの名前はわかりません。

プロセスの1つはPostgresである必要があり、ローカルアドレスは開いている(0.0.0.0)必要があり、ローカルトラフィックのみ(127.0.0.1)に制限されていません。開いていない場合は、構成ファイルを再確認して、サービスを再起動する必要があります。サービスが正しいポートでリッスンしていることを再度確認できます(デフォルトは5432ですが、構成が異なる場合があります)。

最後に、次のコマンドを使用して、リモートコンピューターから正常に接続できます。

psql -h [server ip address] -p [port number, optional if 5432] -U [postgres user name] [database name]
4
aherocalledFrog

設定が構成ファイルに正しく適用されていることを確認してください。

vim /etc/postgresql/x.x/main/postgresql.conf

以下を試してログを確認し、問題を見つけてください。

tail /var/log/postgresql/postgresql-x.x-main.log
3
Amirio

私の場合、管理ポータルでAzureのデフォルトセキュリティポリシーを変更しませんでした。元のポートは許可されたポート22であり、残りはすべて拒否されます。 5432ポートを追加する限り、すべてが正常になります。

0
new2cpp

ホストのIPではなくmachine-nameを使用していると思います。

マシンの名前で試したときに同じエラーが発生しました。なぜなら、クライアントとホストの両方が同じネットワークの下にあり、同じオペレーティングシステムがインストールされている場合にのみ許可されます。

0
Mohanavel T

以下はmacos Mojaveで私を助けてくれました:

$Sudo mv /usr/local/var/postgres /usr/local/var/postgres.save
$brew uninstall postgres
$brew install postgres
0
Meshack Mbuvi

構成ファイルが正しく、まったく同じ問題が発生しました。私の場合、問題は私が使用したEduroam wifiに由来します。別のwifi経由で接続すると、すべてが機能します。少なくとも私の大学では、Eduroamがポート5432をブロックしているようです。

0
Archimondain