Wenn ich versuche, von einem PostgreSQL-Client auf dem Hostsystem eine Verbindung zum PostgreSQL-Server auf einem VirtualBox-Gastsystem herzustellen, erhalte ich die Meldung „Verbindungsversuch fehlgeschlagen“.
Das Hostsystem ist Windows XP. Ich verwende VirtualBox 3.1.2. Das Gastsystem ist Ubuntu 9.10 Karmic Koala mit PostgreSQL 8.4.
Ich habe Port 5432 in VirtualBox weitergeleitet, wie im Handbuch beschrieben unddieser Beitrag. Wenn ich ausführe vboxmanage getextradata vmname enumerate
, erhalte ich (unter anderem) diese Einträge:
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
Ich habe die PostgreSQL-Sicherheit in /etc/postgresql/8.4/main/pg_hba.conf mit diesen Einträgen konfiguriert:
# 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
Dann habe ich PostgreSQL mit neu geladen sudo /etc/init.d/postgresql-8.4 reload
.
Nur für Diagnosezwecke, ich habe meine Windows-Firewall und meine Ubuntu-Firewall deaktiviert ( sudo ufw disable
).
Weiß jemand, welche Schritte ich verpasst habe?
Antwort1
OK, ich habe den fehlenden Schritt gefunden dankdieser Beitrag.
Ich hatte vergessen, die Einstellung listen_addresses in postgresql.conf festzulegen. Ich verwende diesen Wert, aber er könnte eingeschränkter sein:
listen_addresses = '*'
Nur zur Klarstellung: Wenn Sie vom Host aus eine Verbindung zu PostgreSQL herstellen, verwenden Sie localhost als Server und 5432 als Port. VirtualBox leitet diesen Port an den Gast weiter.
Mir ist auch aufgefallen, dass einige Einstellungen einen Neustart von PostgreSQL erfordern, anstatt es einfach neu zu laden. Der Befehl lautet:
sudo /etc/init.d/postgresql-8.4 restart