web-dev-qa-db-ja.com

VirtualBoxゲストのPostgreSQLに接続できません

ホストシステムのPostgreSQLクライアントからVirtualBoxゲストシステムのPostgreSQLサーバーに接続しようとすると、「接続に失敗しました」というメッセージが表示されます。

ホストシステムはWindows XPです。 VirtualBox 3.1.2を実行しています。ゲストシステムは、PostgreSQL 8.4を搭載したUbuntu 9.10 Karmic Koalaです。

マニュアルと この投稿 の説明に従って、VirtualBoxでポート5432を転送しました。 vboxmanage getextradata vmname enumerateを実行すると、(特に)次のエントリが表示されます。

Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/GuestPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/HostPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/Protocol, Value: TCP

/etc/postgresql/8.4/main/pg_hba.confで次のエントリを使用してPostgreSQLのセキュリティを設定しました。

# IPv4 local connections:
Host    all         all         127.0.0.1/32          md5
Host    all         all         192.168.1.0/24        md5
Host    all         all         10.0.2.2/32        md5

次に、Sudo /etc/init.d/postgresql-8.4 reloadを使用してPostgreSQLをリロードしました。

診断目的でのみ、WindowsファイアウォールとUbuntuファイアウォール(Sudo ufw disable)を無効にしました。

誰かが私が逃したステップを知っていますか?

11
Don Kirkby

OK、私は this post のおかげで逃したステップを見つけました。

Postgresql.confでlisten_addressesを設定するのを忘れていました。この値を使用していますが、より制限されている可能性があります。

listen_addresses = '*'

明確にするために、ホストからPostgreSQLに接続するときは、サーバーとしてlocalhostを使用し、ポートとして5432を使用します。 VirtualBoxはそのポートをゲストに転送します。

一部の設定では、PostgreSQLをリロードするだけでなく、PostgreSQLを再起動する必要があることにも気付きました。コマンドは次のとおりです。

Sudo /etc/init.d/postgresql-8.4 restart
12
Don Kirkby