J'essaie de me connecter avec mon client (Macbook Pro) à une base de données Postgres située dans un autre PC du même réseau (Ubuntu) Je peux voir la base de données de l'hôte avec pgAdmin, en se connectant à localhost, mais je ne peut pas voir du client.
J'ai autorisé toutes les connexions dans pg_hba.conf
et postgresql.conf
J'essaie de me connecter depuis le client via pgAdmin au serveur IP où la base de données est stockée (192.168.1.34) et au port 5432.
Et j'obtiens cette erreur Qu'est-ce que je fais mal?
Est-ce que je manque quelque chose
Après avoir lu les suggestions, je peux dire: Sur la machine Ubuntu (serveur de test domestique), je n’ai pas de pare-feu. Postgres est en cours d’exécution.
J'ai essayé depuis la console Ubuntu d'accéder à la base de données: psql -h 127.0.0.1 mydatabase postgres
et peut se connecter (ce qui signifie que le serveur est en cours d'exécution et que le nom d'utilisateur est correct) Mais si j'essaie d'accéder à la même base de données , à partir du même ordinateur, en changeant localhost avec l’IP, je ne peux pas me connecter. Ne devrait-il pas être psql -h 127.0.0.1 mydatabase postgres
identique à psql -h 192.168.1.34 mydatabase postgres
lorsque je me connecte à partir du serveur?
Peut-être est-il en boucle, comme l'a suggéré Alain?
Comme il ne se connecte pas, il est probable qu'il n'écoute pas sur la bonne interface ou est bloqué par le pare-feu.
Postgres est-il en cours d'exécution?
Sudo service postgresql status
Postgres écoute-t-il sur TCP/5432 sur votre IP LAN ou sur 0.0.0.0 (toutes les interfaces)?
netstat -anpt | grep LISTEN
Il pourrait n'écouter que sur 127.0.0.1 (bouclage), ce qui signifie qu'il n'est pas accessible depuis le Mac.
S'il n'écoute pas ou est en boucle, vérifiez postgresql.conf pour listen_addresses:
http://www.postgresql.org/docs/9.1/static/runtime-config-connection.html
Existe-t-il un pare-feu sur la machine Ubuntu?
Assurez-vous d’autoriser au moins les connexions entrantes vers TCP/5432 à partir de l’IP du Mac.
GUFW facilite la configuration, mais cela peut aussi être fait avec iptables.
Autre référence pour la configuration Ubuntu:
Vous avez probablement configuré les deux fichiers suivants
pg_hba.conf
Tout héberger tous 0.0.0.0/0 md5
postgresql.conf
listen_addresses = '*'
Vous devez vérifier si le port 5432 est ouvert: http://www.yougetsignal.com/tools/open-ports/
Si ce n'est pas le cas, ajoutez une règle à votre iptables:
iptables -A INPUT -s 0/0 -p tcp --dport 5432 -j ACCEPTER
0/0: Si vous voulez que quelqu'un y accède.
Vous pouvez le changer pour une adresse IP spécifique ou une plage d'adresses IP.
Dans Ubuntu 17.04, le port par défaut est 5433. Le fichier de contrôle postgresql.conf se trouvant dans le chemin /etc/postgresql/9.6/main
Vous avez autorisé Postgresql à accepter les demandes émanant d’un réseau externe. Pour ce faire, vous devez modifier deux fichiers situés au /etc/postgresql/{version_code}/main
Le premier est pg_hba.conf
, ouvrez et
remplacez Host all all ::1/128 md5
par Host all all 0.0.0.0/0 md5
Le second est postgresql.conf
, ouvert et
remplacez listen_address = 'localhost'
par listen_address = '*'
Maintenant, redémarrez le serveur postgre.