まず、psqlを介してデータベースに接続できるかどうかをテストします。 a> :
psql -h ip_address -d name_of_the_database -U username
接続拒否エラーが発生した場合は、何か間違った設定をして、PostgreSQLへのリモート接続が機能していないかどうかを確認する必要がありますか?
psql: could not connect to server: Connection refused Is the server running on host ip_address
PostgreSQLへのリモート接続が機能しない場合はどうすればよいですか?
-
pg_hba.conf
で認証構成を確認してください通常はLinuxにあります-
/etc/postgresql/version/main/pg_hba.conf
。すべてのIPアドレスからの特定のIPのクライアントの認証を許可する必要があります:# Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 0.0.0.0/0 md5 # IPv6 local connections: host all all ::0/0 md5 #all ips host all all all md5
pg_hba.conf
の設定方法の詳細 ドキュメント にあります。 。 -
次に、特定のポートでリスニングを設定する必要があります。
postgresql.conf
を見つける必要があります 。通常は/etc/postgresql/9.1/main/postgresql.conf
にあります )ファイルを作成し、listen_addressの行を次の場所から変更します:#listen_address = ''
to(コメントを意味する#を削除することを忘れないでください):
listen_address = '*'
-
すべてのステップの後、Postgresqlサービスを再起動する必要があります:
sudo service postgresql restart
-
手順2の後、netstatコマンドの後にリスニングアドレスにポート5432(または5433)が表示されます。
netstat -ntlp
-
その後、ファイアウォールでPostgreSQLのポートを開く必要があります:
sudo ufw allow 5432
ファイアウォールの設定は次のコマンドで確認できます(リストに5432が表示されます):
sudo ufw status
-
前の手順のいずれかが機能しない場合は、PostgreSQLが別のポート(通常は5433)で実行されていないかどうかを確認し、前の手順を繰り返す必要があります。
これは、実行中のバージョンのPostgreSQLが多い場合、またはデータベースをアップグレードして以前のバージョンのPostgreSQLを停止するのを忘れた場合によく発生します。
構成ファイルを見つけるのに問題がある場合は、このスレッドを確認できます postgres * .confファイルはどこにありますか? 。