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?
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 = '*'