ホストシステムの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
)を無効にしました。
誰かが私が逃したステップを知っていますか?
OK、私は this post のおかげで逃したステップを見つけました。
Postgresql.confでlisten_addressesを設定するのを忘れていました。この値を使用していますが、より制限されている可能性があります。
listen_addresses = '*'
明確にするために、ホストからPostgreSQLに接続するときは、サーバーとしてlocalhostを使用し、ポートとして5432を使用します。 VirtualBoxはそのポートをゲストに転送します。
一部の設定では、PostgreSQLをリロードするだけでなく、PostgreSQLを再起動する必要があることにも気付きました。コマンドは次のとおりです。
Sudo /etc/init.d/postgresql-8.4 restart