Impossible de se connecter à Postgres sur Vagrant Box - Connexion refusée?

10

Tout d'abord, je suis nouveau sur Vagrant et Postgres.

J'ai créé mon instance Vagrant en utilisant http://files.vagrantup.com/lucid32.box sans aucun problème. Je suis capable de courir vagrant upet vagrant sshsans problème.

J'ai suivi les instructions avec une modification mineure, j'ai installé le package "postgresql-8.4-postgis" au lieu de "postgresql postgresql-contrib".

J'ai démarré le serveur en utilisant:

postgres@lucid32:/home/vagrant$ /etc/init.d/postgresql-8.4 start

Une fois connecté à l'instance vagabonde, je peux utiliser psqlpour me connecter à l'instance sans problème.

Dans mon Vagrantfile, j'avais déjà ajouté:

config.vm.forward_port 5432, 5432

mais quand j'essaye d'exécuter psql depuis l'hôte local, j'obtiens:

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Je suis sûr que je manque quelque chose de simple. Des idées?

Mettre à jour:

J'ai trouvé une référence à un problème comme celui-ci et l'article suggère d'utiliser:

psql -U postgres -h localhost

avec ça je reçois:

psql: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
Greg
la source

Réponses:

5

Les instructions du blog que vous avez mentionné ne conviennent pas du tout à ubuntu: elles utilisent des éléments de l'installation d'un serveur auto-compilé qui ne se mélangent pas bien avec une version packagée.

Il ne faut pas créer / usr / local / pgsql / data et exécuter initdb dans ce répertoire, car le paquet ubuntu utilise /var/lib/postgresql/<pg-version-number>/<cluster-name>et s'exécute initdbau nom de l'utilisateur.

L'erreur mentionnant "/tmp/.s.PGSQL.5432" montre que l'emplacement attendu pour ce fichier est incorrect (pour ubuntu). Cela devrait être /var/run/postgresql. Cela est probablement dû à l'exécution manuelle d'initdb avec des paramètres incompatibles avec ubuntu.

Les fichiers postgresql.conf et pg_hba.conf à modifier pour activer les connexions non locales doivent se trouver à l'intérieur /etc/postgresql/8.4/mainet non / usr / local / pgsql / data.

Le /etc/init.d/postgresql-8.4devrait être lancé par root (comme tout le reste dans /etc/init.d), pas par l'utilisateur postgres.

PGDATA ne doit pas être défini manuellement, car là encore, cela gêne vraiment le fonctionnement des packages ubuntu postgres.

Ma réponse serait de purger et de réinstaller le package postgresql-8.4 sans suivre les instructions du blog. postgresql-8.4-postgis dépend de postgresql-8.4, il sera donc également supprimé. Assurez-vous également d'annuler le paramètre de PGDATA dans /etc/bash.bashrc.

Daniel Vérité
la source
Je refais l'installation maintenant, mais vous avez remarqué dans votre réponse que vous avez suggéré que le chemin était incorrect pour Ubuntu cherchant au mauvais endroit pour le fichier. Cela pourrait-il être dû au fait que le client fonctionne sous OSX alors que le serveur est une boîte Ubuntu?
J'ai donc fait la réinstallation et j'ai obtenu exactement la même erreur. J'ai regardé un peu plus autour et j'ai constaté que je n'avais pas de ports ouverts dans iptables. Après avoir suivi les instructions ici: cyberciti.biz/tips/howto-iptables-postgresql-open-port.html Je peux me connecter.
Je ne peux pas dire avec certitude si la réinstallation faisait partie du correctif, mais c'était vraiment utile. Je vous donne donc la victoire
Lorsque le client et les serveurs sont sur des hôtes différents, psql doit être appelé par psql -h <server> [optional other arguments]où <serveur> est le nom d'hôte ou l'adresse IP (et non l'hôte local) du serveur (boîte ubuntu dans ce cas). Dans la question, il ne semble pas que vous l'appeliez de cette façon, donc je supposais que toutes les commandes avaient été lancées sur le serveur. Quoi qu'il en soit, je suis vraiment convaincu que la réinstallation était une mesure raisonnable même si la connexion aurait pu être établie.
Je l'appelle comme: psql -U postgres -h localhost depuis que j'ai une configuration de redirection de port vagabonde
2

Vous pouvez trouver mon livre de cuisine utile. Je viens de le poster sur github. Il configure Ubuntu 12.04 LTS avec PostgreSQL 9.1.

rogelio2k
la source