web-dev-qa-db-fra.com

Impossible de connecter PostgreSQL à la base de données distante à l'aide de pgAdmin

J'ai installé PostgreSQL sur mon serveur local (Ubuntu) avec IP 192.168.1.10. Maintenant, j'essaie d'accéder à la base de données à partir de ma machine cliente (Ubuntu) avec IP 192.168.1.11 avec pgAdmin.

Je sais que je dois apporter des modifications dans postgresql.conf et pg_hba.conf pour permettre au client de se connecter. Pourriez-vous me guider s'il vous plaît?

49
vinayrks

C'est en fait un processus en 3 étapes pour vous connecter à un serveur PostgreSQL à distance via pgAdmin3. 

Note: J'utilise Ubuntu 11.04 et PostgreSQL 8.4. 

  1. PostgreSQL doit écouter les connexions entrantes distantes TCP, car les paramètres par défaut permettent d'écouter uniquement les connexions sur l'interface de bouclage. Pour pouvoir accéder au serveur à distance, vous devez ajouter la ligne suivante dans le fichier /etc/postgresql/8.4/main/postgresql.conf:

    listen_addresses = '*'

  2. 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ébergez tous tous 0.0.0.0/0 md5

    Il s'agit d'une règle de contrôle d'accès permettant à quiconque de se connecter depuis n'importe quelle adresse s'il peut fournir un mot de passe valide (mot clé md5). Vous pouvez utiliser le réseau/masque nécessaire au lieu de 0.0.0.0/0.

  3. Lorsque vous avez appliqué ces modifications à vos fichiers de configuration, vous devez redémarrer le serveur PostgreSQL. Il est maintenant possible de se connecter à votre serveur à distance, en utilisant le nom d'utilisateur et le mot de passe.

105
Syed Aslam

Si vous utilisez PostgreSQL 8 ou une version ultérieure, vous devrez peut-être modifier le paramètre listen_addresses dans /etc/postgresql/8.4/main/postgresql.conf.

Essayez d'ajouter la ligne:

listen_addresses = *

qui indiquera à PostgreSQL d’écouter les connexions sur toutes les interfaces réseau.

Si ce paramètre n'est pas explicitement défini, la valeur par défaut est localhost, ce qui signifie qu'il acceptera uniquement les connexions provenant du même ordinateur.

8
jwfearn

Je n'avais pas à changer mon fichier prostgresql.conf mais, je devais procéder comme suit en me basant sur mon psql via la ligne de commande et pgAdmin ne se connectant pas sur RDS avec AWS. 

J'avais mon RDS réglé sur accessible publiquement. Je me suis assuré que ma liste de contrôle d'accès et mes groupes de sécurité étaient bien ouverts et posaient toujours problème. J'ai donc procédé comme suit: Sudo find . -name *.conf Puis Sudo nano ./data/pg_hba.conf conf file Host all all 0.0.0.0/0 md5 et pgAdmin m'ont automatiquement connecté. 

Cela fonctionnait également dans le fichier pg_hba.conf Host all all md5 sans adresse IP et cela fonctionnait également avec mon adresse IP Host all all <myip>/32 md5

En remarque, mon RDS était dans mon VPC par défaut. J'avais une instance RDS identique dans mon VPC autre que par défaut avec des paramètres de groupe de sécurité, d'ACL et de groupe de sécurité identiques à ceux de mon VPC par défaut et je ne pouvais pas le faire fonctionner. Je ne sais pas pourquoi mais c'est pour un autre jour. 

1
max56

Pour redhat linux

Sudo vi /var/lib/pgsql9/data/postgresql.conf 

pgsql9 est le dossier de la version postgres installée, peut être différent pour d'autres

changé listen_addresses = '*' de listen_addresses = 'localhost' puis

Sudo /etc/init.d/postgresql stop
Sudo /etc/init.d/postgresql start
0
Rujoota Shah

Vérifiez votre pare-feu. Lorsque vous le désactivez, vous pouvez vous connecter. Si vous voulez/ne pouvez pas désactiver le pare-feu, ajoutez une règle pour votre connexion à distance.

0
user7127267