Impossible de se connecter PostgreSQL base de données distante en utilisant pgAdmin
-
18-09-2019 - |
Question
J'ai installé PostgreSQL sur mon serveur local (Ubuntu) avec IP 192.168.1.10. Maintenant, je suis en train d'accéder à la base de données de mon ordinateur client (Ubuntu) avec 192.168.1.11 IP avec pgAdmin.
Je sais que je dois faire des changements dans postgresql.conf et pg_hba.conf pour permettre au client de se connecter. Pourriez-vous s'il vous plaît me guider?
La solution
Il est en fait un processus en 3 étapes pour se connecter à un serveur PostgreSQL à distance via pgAdmin3.
Note: J'utilise Ubuntu 11.04 et PostgreSQL 8.4.
-
Vous devez faire PostgreSQL l'écoute des connexions TCP entrantes à distance parce que les paramètres par défaut permettent d'écouter uniquement les connexions sur l'interface loopback. Pour être en mesure d'atteindre le serveur que vous devez ajouter à distance la ligne suivante dans le fichier
/etc/postgresql/8.4/main/postgresql.conf:
listen_addresses = '*'
-
PostgreSQL par défaut refuse toutes les connexions qu'il reçoit de toute adresse distante, vous devez assouplir ces règles en ajoutant cette ligne à
/etc/postgresql/8.4/main/pg_hba.conf:
hôte tous les 0.0.0.0/0 md5
Ceci est une règle de contrôle d'accès qui laissez personne vous connecter à partir de toute adresse s'il peut fournir un mot de passe valide (le mot-clé md5). Vous pouvez utiliser le réseau nécessaire / masque au lieu de 0.0.0.0/0.
-
Lorsque vous avez appliqué ces modifications à vos fichiers de configuration, vous devez redémarrer le serveur PostgreSQL. Maintenant, il est possible de connecter à distance votre serveur, en utilisant le nom d'utilisateur et mot de passe.
Autres conseils
Si vous utilisez PostgreSQL 8 ou au-dessus, vous devrez peut-être modifier la mise en listen_addresses
/etc/postgresql/8.4/main/postgresql.conf
.
Essayez d'ajouter la ligne:
listen_addresses = *
qui dira PostgreSQL pour écouter les connexions sur toutes les interfaces réseau.
Si pas explicitement définie, ce paramètre par défaut pour localhost
ce qui signifie qu'il acceptera uniquement les connexions à partir de la même machine.
Je ne devais pas changer mon fichier prostgresql.conf mais je ne dois faire ce qui suit en fonction de ma psql via la ligne de commande se connectait et pgAdmin ne se connecte pas sur RDS avec AWS.
J'ai eu mon RDS mis à disposition du public. Je me suis assuré mon ACL et les groupes de sécurité ont été ouverts et toujours problème, je l'ai fait ce qui suit:
sudo find . -name *.conf
puis sudo nano ./data/pg_hba.conf
puis ajouté en haut des directives dans le fichier pg_hba.conf host all all 0.0.0.0/0 md5
et pgAdmin me connecté automatiquement.
Cela a également travaillé dans le fichier pg_hba.conf
host all all md5
sans adresse IP et cela a fonctionné aussi avec mon adresse IP host all all <myip>/32 md5
Comme une note de côté, mon RDS était dans mon défaut VPC. J'ai eu une instance RDS identique dans mon VPC non par défaut avec le groupe de sécurité identique, ACL et les paramètres du groupe de sécurité à mon défaut VPC et je ne pouvais pas le faire fonctionner. Je ne sais pas pourquoi, mais, ce sera pour un autre jour.
Dans terminal Linux, essayez ceci:
-
sudo service postgresql start
: pour démarrer le serveur -
sudo service postgresql stop
: pour te arrêter le serveur -
sudo service postgresql status
: pour vérifier l'état du serveur
Pour linux redhat
sudo vi /var/lib/pgsql9/data/postgresql.conf
pgsql9 est le dossier pour la version postgres installée, peut être différent pour les autres
changé listen_addresses = '*' de listen_addresses = « localhost » puis
sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start
Vérifiez votre pare-feu. Lorsque vous désactivez, vous pouvez vous connecter. Si vous souhaitez / ne peut pas désactiver le pare-feu, ajouter une règle pour votre connexion à distance.