web-dev-qa-db-fra.com

Accéder à 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 de DigitalOcean sous 12.10 et postgresql 9.1.

Comment puis-je faire cela? J'ai remarqué que le port 5432 est fermé, comment puis-je l'ouvrir?

45
Øyvind

Pour ouvrir le port 5432, éditez votre /etc/postgresql/9.1/main/postgresql.conf et changez

listen_addresses='localhost'

à

listen_addresses='*'

et redémarrez votre SGBD

invoke-rc.d postgresql restart

maintenant vous pouvez vous connecter avec

$ psql -h hostname -U username -d database

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

Modifier votre

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

et ajouter

Host all all all md5

(Ceci est pour un large accès ouvert. Pour un contrôle plus strict, consultez le documentation de pg_hba.conf et ajustez-le selon vos besoins).

Ci-après vous avez besoin aussi d'un rechargement

invoke-rc.d postgresql reload

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

75
user224465

Cela ne fonctionne plus, si cela a déjà été le cas:

Tout héberger * md5

Les lignes correctes possibles pour cela sont:

Hébergez toutes les plages 0.0.0.0/0 md5 # ipv4

Tout héberger :: 0/0 md5 # ipv6 range

Hébergez tous tous tous md5 #all ip

Source

25
Kethryweryn

Pour le message "Le serveur n'écoute pas", cela m'est arrivé, c'est que je n'efface pas # sur l'archive postgresql.conf, je veux dire:

# listen_addresses = 'localhost'

à:

listen_addresses = '*'

(Désolé pour mon anglais).

2
mrlinux

La réponse la plus votée et acceptée a de graves problèmes de sécurité. Cette méthode est désactivée par défaut pour de bonnes raisons.

Utilisez mieux la redirection de port locale avec ssh:

ssh -L local_port:localhost:foreign_port user@server

Démarrer la redirection de port:

ssh -L 5432:localhost:5432 [email protected]
#or
ssh -L 5432:127.0.0.1:5432 [email protected]

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

Ensuite, vous pouvez vous connecter directement à la base de données à partir de votre ordinateur local:

psql -U db_user -p local_port -l
0
pLumo