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


46

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

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


1
javabypatel.blogspot.in/2015/07/…に記載されている手順に従い、postgresql.confファイルにあるポート番号を変更します。ポートを変更した後、PostgreSQLサーバーを再起動します。
Jayesh

@Jayeshによって投稿されたURLがそのトリックを行いました。指示に従い、開発用コンピューターの1つを別のコンピューターに接続しました(pgAdmin4を使用するWindowsからUbuntu 18.04 postgresql 10.9へ)
EAmez

回答:


78

ポート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のセキュリティを改善することを検討する必要があります。


4
特に、SSLを有効にする必要があります。
クレイグリンガー

オーケー、これを試しましたが、コンピューターからpgAdminを使用して接続しようとすると、「サーバーがリッスンしていない」というメッセージが表示されます。iptablesに追加し、iptables -Lを実行すると、次のように表示されます。ACCEPT tcp-どこでもtcp dpt:postgresqlこのサイト(yougetsignal.com/tools/open-ports)でIPとPORTをチェックすると、ポートが閉じている
Øyvind

2
サーバーはリッスンしていますか?確認netstat -nlt|grep :5432

1
ホスト行をより厳密な方法で挿入しますhost <database> <user> <remote_client_IPaddress>/24 md5
。– gc5

Postgresqlバージョン9.5では、listen_addressesを有効にする前にサーバーを再起動する必要があります。
Heather92065

26

これはもう機能しません。

すべてホスト* md5

これの正しい可能な行は次のとおりです。

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

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

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

ソース


4
これは間違いなくトリックを行いました。上記の答えは間違いなく機能しませんでした。
マイク

@Mikeが正しいことを表現してください:正常 host all all all md5に動作しますか?正しい?セキュリティ上の問題はありますか?
ピータークラウス

@peterkraussはい、すべてのmd5をすべてホストしてくれました。セキュリティの問題?もちろんそれは問題ありませんが、私がやっていたことはそれで十分でした。(内部ネットワーク)
マイク

3

「サーバーがリッスンしていない」というメッセージについては、postgresql.confアーカイブの#を消去しないということです。

#listen_addresses = 'localhost'

に:

listen_addresses = '*'

(私の英語でごめんなさい)。


0

最も投票数が多く受け入れられている回答には、深刻なセキュリティ上の問題があります。正当な理由により、このメソッドはデフォルトで無効になっています。

ローカルポートフォワーディングをより適切に使用するにはssh

ssh -L local_port:localhost:foreign_port user@server

ポート転送を開始します。

ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com

(ローカルおよび外部ポートを構成に合わせて変更します)。

その後、ローカルコンピューターからデータベースに直接接続できます。

psql -U db_user -p local_port -l
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.