pgAdmin3を使用してUbuntuのリモートPostgreSQLデータベースに接続する方法


22

UbuntuマシンでPostgreSQLデータベースをセットアップしようとしています。リモートマシンからpgAdmin3を使用してアクセスできるようにしたいと思います。これを設定するにはどうすればよいですか?

UbuntuにPostgreSQLデータベースをインストールしました:

sudo apt-get install postgresql

私の/etc/postgresql/9.1/main/pg_hba.conf持っているこの行:

host    all    all    all    password

したがって、すべてのIPv4アドレスからの接続を受け入れ、パスワードはクリアテキストで送信する必要があります(これは開発上の理由によるものです)。

このコマンドを実行して、実行中のサービスを確認すると:

sudo netstat -tulpn

これらの行を見ると、PostgreSQLがデフォルトポートで接続を受け入れていることがわかります。

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

同じローカルネットワーク上のリモートコンピューターからこのPostgreSQLサーバーに接続しようとすると、次のエラーメッセージが表示されます。

サーバーはリッスンしません

サーバーは接続を受け入れません:接続ライブラリは報告します

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

postgresユーザー名として使用し、パスワードは使用しませんでした。しかしpostgres、パスワードとしても試しました。ローカルサーバーでは、次を使用してログインできます。

sudo -u postgres psql postgres

pgAdmin3を使用して、リモートマシンからUbuntuで実行されているPostgreSQLデータベースに接続するにはどうすればよいですか?

回答:


25

netstatレポートの行は、データベースがlocalhost:5432(127.0.0.1)でのみ着信TCP接続をリッスンしていることを示しています。

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

したがって、pg_hba.confで指定した許可に関係なく、ローカルtcp接続のみを受け入れることができます。pg_hba.confは許可された接続のみを指定しますが、サービスがリッスンするインターフェイスを指定しません。

サーバーがリッスンするアドレスは、postgresql.confのlisten_addresses GUCで指定されます。サーバーがリモート接続をリッスンするようにしたい場合は、リッスンしたい、または*ホストで利用可能なすべてのインターフェースをリッスンするIPを指定する必要があります。

postgresqlサーバーがホスト上のすべてのインターフェイスでリッスンするようにするには、postgresql.confに次の行が必要です。

listen_addresses = '*'

しかし、私はすでにファイルで指定allしていpg_hba.confます...ので、それはすべてのIPアドレスからconnetionsを受け入れる必要があります。
ジョナス

おそらくもっとはっきり言ったかもしれません。pg_hbaは、データベースがリッスンするものを指定せず、protocol / db / user / remote-addr接続のみを許可します。
-dbenhur

わかりましたので、どうすれば修正できますか?何か提案はありますか?
ジョナス

1
listen_addresses = '*'postgresql.confに行を入れてサーバーを再起動することで修正します。
-dbenhur

おかげで、この問題は解決しました。今、デフォルトのパスワードで問題が発生しました:(
ジョナス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.