Auf VirtualBox-Gast kann keine Verbindung zu PostgreSQL hergestellt werden

11

Wenn ich versuche, eine Verbindung von einem PostgreSQL-Client auf dem Hostsystem zum PostgreSQL-Server auf einem VirtualBox-Gastsystem herzustellen, wird die Meldung "Verbindungsversuch fehlgeschlagen" angezeigt.

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 und in diesem Beitrag beschrieben . Wenn ich laufe vboxmanage getextradata vmname enumerate, bekomme ich (unter anderem) folgende 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 folgenden 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 zu Diagnosezwecken habe ich meine Windows-Firewall und meine Ubuntu-Firewall ( sudo ufw disable) deaktiviert .

Weiß jemand, welche Schritte ich verpasst habe?

Don Kirkby
quelle

Antworten:

12

OK, ich habe den verpassten Schritt dank dieses Beitrags gefunden .

Ich hatte vergessen, die Einstellung listen_addresses in postgresql.conf festzulegen. Ich verwende diesen Wert, aber er könnte eingeschränkter sein:

listen_addresses = '*'

Wenn Sie vom Host aus eine Verbindung zu PostgreSQL herstellen, verwenden Sie zur Verdeutlichung localhost als Server und 5432 als Port. VirtualBox leitet diesen Port an den Gast weiter.

Ich habe auch festgestellt, dass Sie bei einigen Einstellungen PostgreSQL neu starten müssen, anstatt es nur neu zu laden. Der Befehl lautet:

sudo /etc/init.d/postgresql-8.4 restart
Don Kirkby
quelle
1
Nachdem ich mehrere Tutorials im Web durchgesehen habe, um Hinweise zu erhalten UND zu laufen systemctl reload postgresql, hat systemctl restart postgresqles das letztendlich für mich getan.
Amani Kilumanga