Accéder à distance à la base de données postgresql

46

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?

Øyvind
la source
1
Suivez les étapes mentionnées dans javabypatel.blogspot.in/2015/07/… et modifiez le numéro de port présent dans le fichier postgresql.conf. après le changement de port, redémarrez le serveur PostgreSQL.
Jayesh
Url posté par @Jayesh a fait le tour. Suivez les instructions et connectez avec succès l'un de mes ordinateurs de développement à un autre (de Windows avec pgAdmin4 à Ubuntu 18.04 postgresql 10.9)
EAmez

Réponses:

79

Pour ouvrir le port 5432, éditez votre /etc/postgresql/9.1/main/postgresql.confet 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 la 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.

Daniel Vérité
la source
4
En particulier, vous devez activer SSL.
Craig Ringer
Okey, j'ai essayé cela, mais lorsque j'essaie de me connecter à l'aide de pgAdmin à partir de mon ordinateur, le message "Le serveur ne m'écoute pas". J'ai ajouté à iptables, et lorsque je lance iptables -L les spectacles suivants: ACCEPT tcp - n'importe où n'importe où dpc tcp: postgresql Lors de la vérification de l'adresse IP et du port sur ce site ( yougetsignal.com/tools/open-ports ), le message le port est fermé
Øyvind le
2
le serveur écoute-t-il? Vérifier avecnetstat -nlt|grep :5432
1
Je voudrais insérer la ligne hôte de manière plus stricte:host <database> <user> <remote_client_IPaddress>/24 md5
gc5
Pour Postgresql version 9.5, vous devrez peut-être redémarrer le serveur avant que les listen_addresses ne prennent effet.
Heather92065
26

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

héberger tous tous * md5

Les lignes correctes possibles pour cela sont:

héberger tous tous 0.0.0.0/0 gamme md5 # ipv4

héberger tous tous :: 0/0 md5 # plage ipv6

héberger tous tous tous md5 #all ip

La source

Kethryweryn
la source
4
Cela a certainement fait le tour. La réponse ci-dessus n'a certainement pas fonctionné.
Mike
S'il vous plaît, @Mike Express, ce qui est correct: host all all all md5fonctionnera-t-il correctement ? C'est correct? un problème de sécurité?
Peter Krauss
@peterkrauss Oui, tout héberger tout tout md5 a fonctionné pour moi. Problème de sécurité? Bien sûr que si, mais pour ce que je faisais, c’était très bien. (Réseau interne)
Mike
3

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

mrlinux
la source
0

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.

Mieux utiliser 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 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com

(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
pLumo
la source