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?
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.
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
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).
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