PostgreSQLデータベースにリモートアクセスする

PostgreSQLデータベースにリモートアクセスする

12.10 と postgresql 9.1 を実行している DigitalOcean の VPS 上のリモート マシンから postgresql データベースにアクセスする必要があります。

どうすればいいですか? ポート 5432 が閉じていることに気づきました。これを開くにはどうすればよいですか?

答え1

ポート5432を開くには、編集し/etc/postgresql/9.1/main/postgresql.confて変更します

listen_addresses='localhost'

listen_addresses='*'

DBMSを再起動します

invoke-rc.d postgresql restart

今なら接続できます

$ psql -h hostname -U username -d database

認証できない場合は、ユーザーにデータベースへのアクセス権を与える必要があります。

編集する

/etc/postgresql/9.1/main/pg_hba.conf

そして追加する

host all all all md5

(これは広く開かれたアクセスのためのものです。より厳格な制御については、pg_hba.conf ドキュメント必要に応じて調整してください。

今後はリロードも必要になります

invoke-rc.d postgresql reload

これは基本的な構成であることは言うまでもありませんが、ファイアウォールを変更して DBMS のセキュリティを強化することを検討する必要があります。

答え2

これは、以前は機能していたとしても、もう機能しません。

ホスト すべて すべて * md5

この場合の正しい行は次のとおりです:

ホスト すべて すべて 0.0.0.0/0 md5 #ipv4 範囲

ホスト すべて すべて ::0/0 md5 #ipv6 範囲

ホスト すべて すべて すべて md5 #すべて ip

ソース

答え3

「サーバーがリッスンしていません」というメッセージは、アーカイブ postgresql.conf の # を削除していないために発生しました。つまり、次のようになります。

#listen_addresses='localhost'

に:

listen_addresses='*'

(英語が下手ですみません)。

答え4

次の構成では、以下を設定する必要があります。

/etc/postgresql/10/main/postgresql.conf

# Connection Settings -

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

/etc/postgresql/10/main/pg_hba.conf

# IPv4 local connections:
host    all             all             0.0.0.0/0           md5

サーバーを再起動します。

sudo /etc/init.d/postgresql restart

関連情報