web-dev-qa-db-ja.com

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

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

どうすればいいですか?ポート5432が閉じていることに気づいたのですが、どうすれば開きますか?

46
Øyvind

ポート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 documentation を参照し、必要に応じて調整してください)。

今後はリロードも必要です

invoke-rc.d postgresql reload

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

78
user224465

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

すべてホスト* md5

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

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

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

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

ソース

25
Kethryweryn

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

#listen_addresses = 'localhost'

に:

listen_addresses = '*'

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

3
mrlinux

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

sshでローカルポート転送をより適切に使用する:

ssh -L local_port:localhost:foreign_port user@server

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

ssh -L 5432:localhost:5432 [email protected]
#or
ssh -L 5432:127.0.0.1:5432 [email protected]

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

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

psql -U db_user -p local_port -l
0
pLumo