Nie można połączyć się z PostgreSQL na gościu VirtualBox

11

Kiedy próbuję połączyć się z klienta PostgreSQL w systemie hosta z serwerem PostgreSQL w systemie gościa VirtualBox, pojawia się komunikat „próba połączenia nie powiodła się”.

System hosta to Windows XP. Korzystam z VirtualBox 3.1.2. System gościa to Ubuntu 9.10 Karmic Koala z PostgreSQL 8.4.

Przekierowałem port 5432 w VirtualBox zgodnie z opisem w instrukcji i tym poście . Kiedy uruchamiam vboxmanage getextradata vmname enumerate, otrzymuję następujące wpisy (między innymi):

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

Skonfigurowałem zabezpieczenia PostgreSQL w /etc/postgresql/8.4/main/pg_hba.conf z następującymi wpisami:

# 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

Potem ponownie załadowałem PostgreSQL sudo /etc/init.d/postgresql-8.4 reload.

Wyłącznie do celów diagnostycznych wyłączyłem zaporę systemu Windows i zaporę Ubuntu ( sudo ufw disable).

Czy ktoś wie, jakie kroki przegapiłem?

Don Kirkby
źródło

Odpowiedzi:

12

OK, znalazłem pominięty krok dzięki temu postowi .

Zapomniałem ustawić ustawienia Listen_addresses w postgresql.conf. Używam tej wartości, ale może być bardziej ograniczona:

listen_addresses = '*'

Aby to wyjaśnić, podczas łączenia się z PostgreSQL z hosta, użyj localhost jako serwera, a 5432 jako portu. VirtualBox przekieruje ten port do gościa.

Uświadomiłem sobie również, że niektóre ustawienia wymagają ponownego uruchomienia PostgreSQL zamiast tylko ponownego ładowania. Polecenie to:

sudo /etc/init.d/postgresql-8.4 restart
Don Kirkby
źródło
1
Po przejrzeniu wielu samouczków w Internecie w celu uzyskania wskazówek, ORAZ uruchomienia systemctl reload postgresql, systemctl restart postgresqlto w końcu to dla mnie zrobiło.
Amani Kilumanga,