web-dev-qa-db-fra.com

Comment se connecter à une base de données PostgreSQL distante sur Ubuntu à l'aide de pgAdmin3?

J'essaie de configurer une base de données PostgreSQL sur une machine Ubuntu. Je voudrais pouvoir y accéder en utilisant pgAdmin3 à partir d'une machine distante. Comment configurer cela?

J'ai installé la base de données PostgreSQL sur Ubuntu en utilisant:

Sudo apt-get install postgresql

Dans mon /etc/postgresql/9.1/main/pg_hba.conf ai-je cette ligne:

Host    all    all    all    password

il doit donc accepter les connexions de toutes les adresses IPv4 et les mots de passe doivent être envoyés en texte clair (pour des raisons de développement).

Si j'exécute cette commande pour voir quels services sont en cours d'exécution:

Sudo netstat -tulpn

Je peux voir ces lignes, cela montre que PostgreSQL accepte les connexions sur le port par défaut:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

Lorsque j'essaie de me connecter à ce serveur PostgreSQL à partir d'un ordinateur distant sur le même réseau local, j'obtiens ce message d'erreur:

le serveur n'écoute pas

Le serveur n'accepte pas les connexions: la bibliothèque de connexions rapporte

impossible de se connecter au serveur: connexion refusée Le serveur fonctionne-t-il sur l'hôte "10.0.1.7" et accepte-t-il les connexions TCP/IP sur le port 5432?

J'ai utilisé postgres comme nom d'utilisateur et sans mot de passe. Mais j'ai également essayé avec postgres comme mot de passe. Sur le serveur local, je peux me connecter en utilisant:

Sudo -u postgres psql postgres

Comment puis-je me connecter à une base de données PostgreSQL exécutée sur Ubuntu à partir d'une machine distante à l'aide de pgAdmin3?

22
Jonas

La ligne de votre rapport netstat indique que la base de données écoute uniquement sur localhost: 5432 (127.0.0.1) les connexions TCP entrantes.

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

Il ne peut donc accepter que les connexions TCP locales, quelles que soient les autorisations que vous avez spécifiées dans pg_hba.conf. pg_hba.conf spécifie uniquement les connexions autorisées, mais ne spécifie pas les interfaces que votre service écoutera.

Les adresses sur lesquelles le serveur écoute sont spécifiées avec listen_addresses GUC dans postgresql.conf . Si vous voulez que le serveur écoute les connexions distantes, vous devez spécifier les adresses IP sur lesquelles vous voulez qu'il écoute ou * pour écouter sur toutes les interfaces disponibles sur l'hôte.

Pour que votre serveur postgresql écoute sur toutes les interfaces sur l'hôte, vous devez avoir la ligne suivante dans postgresql.conf:

listen_addresses = '*'
25
dbenhur