web-dev-qa-db-ja.com

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

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

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

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データベースに接続するにはどうすればよいですか?

22
Jonas

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は許可された接続のみを指定しますが、サービスがリッスンするインターフェースは指定しません。

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

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

listen_addresses = '*'
25
dbenhur