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?
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.
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 = '*'
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.
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.
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.
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.
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
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.