web-dev-qa-db-fra.com

Postgresql: connexion refusée. Vérifiez que le nom d'hôte et le port sont corrects et que le postmaster accepte les connexions TCP / IP

J'essaie de connecter postgresql mais j'obtiens cette erreur.

org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

Mon fichier pg_hba.conf est comme ça.

 TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# IPv4 local connections:
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5

Je serais très obligé si quelqu'un a la bonté de bien expliquer ce qui se passe ici et comment le corriger.

49
Rose18

L'erreur que vous citez n'a rien à voir avec pg_hba.conf; il ne parvient pas à se connecter, ni à autoriser la connexion.

Faites ce que le message d'erreur dit:

Vérifiez que le nom d'hôte et le port sont corrects et que le postmaster accepte les connexions TCP/IP

Vous n'avez pas montré la commande qui produit l'erreur. En supposant que vous vous connectiez sur localhost port 5432 (les valeurs par défaut pour une installation PostgreSQL standard), alors soit:

  • PostgreSQL n'est pas en cours d'exécution

  • PostgreSQL n'écoute pas les connexions TCP/IP (listen_addresses dans postgresql.conf)

  • PostgreSQL n'écoute que sur IPv4 (0.0.0.0 ou 127.0.0.1) et vous vous connectez sur IPv6 (::1) ou inversement. Cela semble être un problème sur certaines anciennes versions de Mac OS X qui ont un comportement de socket IPv6 étrange et sur certaines anciennes versions de Windows.

  • PostgreSQL écoute sur un port différent de celui sur lequel vous vous connectez

  • (peu probable) il existe une règle iptables bloquant les connexions en boucle

(Si vous êtes pas en vous connectant sur localhost, il peut également s'agir d'un pare-feu réseau bloquant les connexions TCP/IP, mais je suppose que vous utilisez les valeurs par défaut, car vous ne l'avez pas encore fait. dire).

Alors ... vérifiez ceux-ci:

  • ps -f -u postgres devrait lister postgres processus

  • Sudo lsof -n -u postgres |grep LISTEN ou Sudo netstat -ltnp | grep postgres devrait afficher les adresses TCP/IP et les ports sur lesquels PostgreSQL écoute.

BTW, je pense que vous devez être sur une ancienne version. Sur mon installation 9.3, l'erreur est un peu plus détaillée:

$ psql -h localhost -p 12345
psql: could not connect to server: Connection refused
        Is the server running on Host "localhost" (::1) and accepting
        TCP/IP connections on port 12345?
102
Craig Ringer