Impossible de se connecter à PostgreSQL sur l'invité VirtualBox

11

Lorsque j'essaie de me connecter d'un client PostgreSQL sur le système hôte au serveur PostgreSQL sur un système invité VirtualBox, j'obtiens un message "échec de la tentative de connexion".

Le système hôte est Windows XP. J'utilise VirtualBox 3.1.2. Le système invité est Ubuntu 9.10 Karmic Koala avec PostgreSQL 8.4.

J'ai transmis le port 5432 dans VirtualBox comme décrit dans le manuel et cet article . Lorsque je cours vboxmanage getextradata vmname enumerate, j'obtiens ces entrées (entre autres):

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

J'ai configuré la sécurité PostgreSQL dans /etc/postgresql/8.4/main/pg_hba.conf avec ces entrées:

# 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

Ensuite, j'ai rechargé PostgreSQL avec sudo /etc/init.d/postgresql-8.4 reload.

À des fins de diagnostic uniquement , j'ai désactivé mon pare-feu Windows et mon pare-feu Ubuntu ( sudo ufw disable).

Quelqu'un sait quelles étapes j'ai ratées?

Don Kirkby
la source

Réponses:

12

OK, j'ai trouvé l'étape manquée grâce à ce post .

J'avais oublié de définir le paramètre listen_addresses dans postgresql.conf. J'utilise cette valeur, mais elle pourrait être plus restreinte:

listen_addresses = '*'

Juste pour clarifier, lorsque vous vous connectez à PostgreSQL depuis l'hôte, utilisez localhost comme serveur et 5432 comme port. VirtualBox transmettra ce port à l'invité.

J'ai également réalisé que certains paramètres vous obligent à redémarrer PostgreSQL au lieu de simplement le recharger. La commande est:

sudo /etc/init.d/postgresql-8.4 restart
Don Kirkby
la source
1
Après avoir parcouru plusieurs tutoriels sur le Web pour obtenir des conseils, ET en cours d'exécution systemctl reload postgresql, systemctl restart postgresqlc'est ce qui m'a finalement fait.
Amani Kilumanga