55 votes

Accès à distance à la base de données postgresql

J'ai besoin d'accéder à une base de données postgresql à partir d'une machine distante sur un VPS chez DigitalOcean fonctionnant sous 12.10 et postgresql 9.1.

Comment dois-je m'y prendre ? J'ai remarqué que le port 5432 est fermé, comment puis-je l'ouvrir ?

96voto

Pour ouvrir le port 5432, modifiez votre /etc/postgresql/9.1/main/postgresql.conf et le changement

listen_addresses='localhost'

à

listen_addresses='*'

et redémarrez votre SGBD

invoke-rc.d postgresql restart

vous pouvez désormais vous connecter avec

$ psql -h hostname -U username -d database

si vous ne pouvez pas vous authentifier, vous devez donner à votre utilisateur des droits d'accès à votre base de données.

Modifiez votre

/etc/postgresql/9.1/main/pg_hba.conf

et ajouter

host all all all md5

(Il s'agit d'un accès très ouvert. Pour un contrôle plus strict, consultez le Documentation de pg_hba.conf et à ajuster en fonction de vos besoins).

Par la suite, vous devez aussi recharger

invoke-rc.d postgresql reload

Je n'ai pas besoin de mentionner qu'il s'agit d'une configuration de base, maintenant vous devriez penser à modifier votre pare-feu et améliorer la sécurité de votre SGBD.

30voto

Kethryweryn Points 401

Cela ne fonctionne plus, si cela a jamais fonctionné :

hôte tout tout * md5

Les lignes correctes possibles pour cela sont :

host all all 0.0.0.0/0 md5 #ipv4 range

host all all ::0/0 md5 #ipv6 range

host all all all all md5 #all ip

Source :

4voto

mrlinux Points 41

Pour le message "server not listening", qui m'est arrivé est, que je n'ai pas effacé de # sur l'archive postgresql.conf je veux dire :

listen_addresses='localhost'

à :

listen_addresses='*'

(Désolé pour mon anglais).

4voto

pLumo Points 23269

La réponse la plus votée et acceptée a de sérieuses implications en matière de sécurité. Cette méthode est désactivée par défaut pour de bonnes raisons.

Mieux vaut utiliser le transfert de port local avec ssh :

ssh -L local_port:localhost:foreign_port user@server

Lancez le transfert de port :

ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com

(Changez les ports locaux et étrangers en fonction de votre configuration).

Vous pouvez alors vous connecter directement à la base de données depuis votre ordinateur local :

psql -U db_user -p local_port -l

3voto

Ramesh Ponnusamy Points 261

Après la configuration, vous devez définir :

En /etc/postgresql/10/main/postgresql.conf

# Connection Settings -

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

En /etc/postgresql/10/main/pg_hba.conf

# IPv4 local connections:
host    all             all             0.0.0.0/0           md5

Redémarrez votre serveur :

sudo /etc/init.d/postgresql restart

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X