erreur" psql: impossible de se connecter au serveur: connexion refusée " lors de la connexion à une base de données distante

j'essaie de me connecter à une base de données postgres installée sur un serveur distant en utilisant la commande suivante:

psql-h host_ip - U db_username - d db_name

C'est l'erreur qui se produit:

psql: impossible de se connecter au serveur: Connexion refusée Est-ce que le serveur tourne sur host "" et accepte Connexions TCP / IP sur le port 5432?

  1. Postgres la version installée est 9.4.
  2. système D'exploitation hôte: Ubuntu 15.04
  3. Client système d'exploitation : Centos 7

j'ai déjà essayé ce qui suit, mais la question n'est toujours pas résolue:

  1. révisé pg_hba.conf fichier à inclure

host all 0.0.0 / 0 md5

  1. Édité postgresql.conf' et a changé le paramètre listen en

listen_addresses= ' * '

  1. redémarrage du service postgres.
  2. a désactivé le pare-feu et iptables sur l'hôte et le client.
  3. j'ai vérifié en exécutant la commande psql localement et cela a fonctionné.
  4. j'ai essayé la deuxième solution donnée dans ce question . L'exécution de nmap m'a donné la sortie suivante:

Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-07 18:08 IST Nmap scan report for 10.17.250.250 Host is up (0.0000040s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http

est-ce que je manque quelque chose. J'espère que quelqu'un peut vous aider.

21
demandé sur Community 2015-09-07 15:48:20

6 réponses

cd /etc/postgresql/9.x/main/

ouvrir le fichier nommé postgresql.conf

sudo vi postgresql.conf

ajouter cette ligne à ce fichier

listen_addresses = '*'

puis ouvrir le fichier nommé pg_hba.conf

sudo vi pg_hba.conf

et ajouter cette ligne à ce fichier

host  all  all 0.0.0.0/0 md5

il permet l'accès à toutes les bases de données pour tous les utilisateurs avec un mot de passe crypté

redémarrer votre serveur

sudo /etc/init.d/postgresql restart
44
répondu Thameem 2016-12-15 10:18:54

Vérifier le port défini dans postgresql.conf . Mon installation de postgres 9.4 utilise le port 5433 au lieu de 5432

8
répondu jorge Godoy 2015-12-15 22:01:31

assurez-vous que les paramètres sont appliqués correctement dans le fichier de configuration.

vim /etc/postgresql/x.x/main/postgresql.conf

essayez ce qui suit pour voir les journaux et trouver votre problème.

tail /var/log/postgresql/postgresql-x.x-main.log
2
répondu Amirio 2017-07-27 07:10:27

je pense que vous utilisez le nom de la machine au lieu de l'ip de l'hôte.

j'ai eu la même erreur quand j'ai essayé avec le nom de votre machine. Car, Il n'est permis que lorsque le client et l'hôte sont sous le même réseau et ils ont le même système d'Exploitation installé.

0
répondu Mohanavel 2016-04-16 07:14:36

dans mon cas, je n'ai pas changé la Politique de sécurité par défaut d'azure dans le portail de gestion. L'original est le port 22 autorisé et le reste est refusé. Tant que j'ajoute le port 5432, tout devient bon.

0
répondu new2cpp 2017-03-25 14:42:10

j'ai eu du mal à me connecter à distance à une nouvelle installation PostgreSQL sur mon Raspberry Pi. Voici le détail de ce que j'ai fait pour résoudre ce problème:

tout d'abord, ouvrez le fichier de configuration PostgreSQL et assurez-vous que le service va écouter en dehors de localhost.

sudo [editor] /etc/postgresql/[version]/main/postgresql.conf

j'ai utilisé nano , mais vous pouvez utiliser l'éditeur de votre choix, et bien que j'ai la version 9.1 installé, ce répertoire sera selon la version que vous avez installée.

Rechercher dans la section intitulée "connexions et authentification". Le premier réglage devrait être 'listen_addresses' , et pourrait ressembler à ceci:

#listen_addresses = 'localhost'     # what IP address(es) to listen on;

les commentaires à droite donnent de bonnes instructions sur la façon de modifier ce champ, et l'utilisation du '*' suggéré pour tous fonctionnera bien.

veuillez noter que ce champ est commenté par #. Selon les commentaires, il sera par défaut à 'localhost', donc changer simplement la valeur en '*' n'est pas suffisant, vous devez également décommenter le paramètre en supprimant le # .

Il devrait maintenant ressembler à ceci:

listen_addresses = '*'         # what IP address(es) to listen on;

vous pouvez également vérifier le paramètre suivant, 'port', pour vous assurer que vous vous connectez correctement. 5432 est le port par défaut, et c'est le port auquel psql tentera de se connecter si vous n'en spécifiez pas un.

enregistrer et fermer le fichier, puis ouvrir le fichier de configuration D'authentification Client, qui est dans le même répertoire:

sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf

je recommande la lecture du fichier si vous voulez restreindre l'accès, mais pour les connexions ouvertes de base, vous sauterez au bas du fichier et ajouter une ligne comme celle-ci:

host all all all md5

vous pouvez appuyer sur tab au lieu d'espace pour aligner les champs avec les colonnes existantes si vous voulez.

Personnellement, j'ai plutôt ajouté une ligne qui ressemblait à ceci:

host [database_name] pi 192.168.1.0/24 md5

cela restreint la connexion à un seul utilisateur et à une seule base de données sur le sous-réseau du réseau local.

une fois que vous avez sauvegardé les modifications dans le fichier, vous devez redémarrer le service pour mettre en œuvre les modifications.

sudo service postgresql restart

Maintenant, vous pouvez vérifier que le service est ouvertement écoute sur le port correct en utilisant les éléments suivants commande:

sudo netstat -ltpn

si vous ne l'exécutez pas comme élevé (en utilisant sudo ) il ne vous dit pas les noms des processus écoutant sur ces ports.

L'un des processus devrait être Postgres, et l'adresse locale devrait être ouverte (0.0.0.0) et ne pas se limiter au trafic local seulement (127.0.0.1). Si elle n'est pas ouverte, vous devrez alors revérifier vos fichiers de configuration et redémarrer le service. Vous pouvez confirmer que le service est à l'écoute sur le port approprié (par défaut 5432 , mais votre configuration pourrait être différente).

enfin, vous pourrez vous connecter avec succès à partir d'un ordinateur distant en utilisant la commande:

psql -h [server ip address] -p [port number, optional if 5432] -U [postgres user name] [database name]
0
répondu aherocalledFrog 2018-04-07 21:31:56