web-dev-qa-db-fra.com

impossible de se connecter à la base de données postgresql distante

J'essaie de me connecter à une base de données psql distante. Avant d'ajouter l'entrée pg_hba.conf avec l'adresse IP du client, je recevais un message d'erreur:

xdev@xdevbox:~$ psql -U postgres testdb -h 10.1.1.47
psql: FATAL:  no pg_hba.conf entry for Host "10.201.50.71", user "postgres", database "testdb", SSL off

J'ai ajouté l'IP du client avec des paramètres de confiance. J'ai également changé l'adresse d'écoute dans postgres.conf sur le serveur pour écouter "*". Ensuite, j'ai redémarré le serveur de base de données à l'aide de la commande /etc/init.d/postgresql restart.

Maintenant, lorsque j'essaie de me connecter, j'obtiens le message d'erreur suivant:

psql: could not connect to server: Connection refused
    Is the server running on Host "10.1.1.47" and accepting
    TCP/IP connections on port 5432?

dans postgresql.conf, le port est défini sur 5432. Je ne sais pas quoi vérifier d'autre.

Merci

17
dot

Vous devez configurer les deux fichiers suivants

pg_hba.conf

Host all all 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 ACCEPT

0/0: Si vous voulez que quelqu'un y accède. Vous pouvez le changer en une adresse IP spécifique ou une plage d'adresses IP.

23
Danish Khakwani

Je n'accepte pas d'utiliser

Host all all 0.0.0.0/0 md5

si votre base de données est exposée à Internet. Dans mon projet, postrgres est dans le cloud et est utilisé depuis le backend. Je dois me connecter directement à la base de données uniquement pour la maintenance. Je me connecte à la base de données à partir d'une adresse IP publique, par exemple 1.2.3.4. Dans ce cas, l'entrée correcte est:

Host mybackend myuser 1.2.3.4/0 md5

Veuillez noter le "/ 0" après l'adresse IP. Sans "/ 0", vous recevrez "Erreur de connexion refusée".

Il est toujours préférable de restreindre l'accès à la base de données en spécifiant le nom de la base de données, l'utilisateur de la base de données et les adresses IP dans la liste blanche. N'utilisez jamais "ALL" sauf si vous êtes dans un environnement en développement.

Au revoir!

0
Stefano Zabucchi