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
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.
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!