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?
- Postgres la version installée est 9.4.
- système D'exploitation hôte: Ubuntu 15.04
- Client système d'exploitation : Centos 7
j'ai déjà essayé ce qui suit, mais la question n'est toujours pas résolue:
- révisé
pg_hba.conf
fichier à inclure
host all 0.0.0 / 0 md5
- Édité postgresql.conf' et a changé le paramètre listen en
listen_addresses= ' * '
- redémarrage du service postgres.
- a désactivé le pare-feu et iptables sur l'hôte et le client.
- j'ai vérifié en exécutant la commande psql localement et cela a fonctionné.
- 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.
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
Vérifier le port défini dans postgresql.conf
. Mon installation de postgres 9.4 utilise le port 5433
au lieu de 5432
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
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é.
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.
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]