Impossibile connettersi a Postgres su Vagrant Box - Connessione rifiutata?


10

Prima di tutto, sono nuovo di Vagrant e Postgres.

Ho creato la mia istanza di Vagrant usando http://files.vagrantup.com/lucid32.box senza alcun problema. Sono in grado di correre vagrant upe vagrant sshsenza problemi.

Ho seguito le istruzioni con una piccola modifica, ho installato il pacchetto "postgresql-8.4-postgis" anziché "postgresql postgresql-contrib".

Ho avviato il server utilizzando:

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

Mentre sono connesso all'istanza vagabonda posso usare psqlper connettermi all'istanza senza problemi.

Nel mio Vagrantfile avevo già aggiunto:

config.vm.forward_port 5432, 5432

ma quando provo a eseguire psql dall'host locale ottengo:

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

Sono sicuro che mi manca qualcosa di semplice. Qualche idea?

Aggiornare:

Ho trovato un riferimento a un problema come questo e l'articolo ha suggerito di utilizzare:

psql -U postgres -h localhost

con quello ottengo:

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

Risposte:


5

Le istruzioni dal post sul blog che hai citato non sono affatto giuste per Ubuntu: usano pezzi dell'installazione di un server autocompilato che non si mescolano bene con una versione impacchettata.

Non si dovrebbe creare / usr / local / pgsql / data ed eseguire initdb in quella directory, perché il pacchetto ubuntu utilizza /var/lib/postgresql/<pg-version-number>/<cluster-name>ed esegue initdbper conto dell'utente.

L'errore che menziona "/tmp/.s.PGSQL.5432" mostra che l'ubicazione prevista per questo file non è corretta (per Ubuntu). Dovrebbe essere dentro /var/run/postgresql. Ciò è probabilmente dovuto all'esecuzione manuale di initdb con parametri incompatibili con Ubuntu.

I file postgresql.conf e pg_hba.conf da modificare per abilitare le connessioni non locali devono essere all'interno /etc/postgresql/8.4/maine non / usr / local / pgsql / data.

L' /etc/init.d/postgresql-8.4dovrebbero essere lanciate da root (come tutto il resto in /etc/init.d), non per l'utente postgres.

PGDATA non dovrebbe essere impostato manualmente, perché di nuovo ostacola davvero il funzionamento dei pacchetti di Ubuntu Postgres.

La mia risposta sarebbe quella di eliminare e reinstallare il pacchetto postgresql-8.4 senza seguire nessuna delle istruzioni dal post del blog. postgresql-8.4-postgis dipende da postgresql-8.4, quindi verrà rimosso anche. Assicurati anche di annullare l'impostazione di PGDATA in /etc/bash.bashrc.


Sto ripristinando l'installazione ora, ma nella tua risposta hai notato che hai suggerito che il percorso era sbagliato, fai Ubuntu cercando il file nel posto sbagliato. Ciò potrebbe essere dovuto al client in esecuzione su OSX mentre il server è una casella di Ubuntu?

Quindi ho fatto la reinstallazione e ho avuto esattamente lo stesso errore. Mi sono guardato un po 'di più e ho scoperto che non avevo porte aperte in iptables. Dopo aver seguito le istruzioni qui: cyberciti.biz/tips/howto-iptables-postgresql-open-port.html Sono in grado di connettermi.

Non posso dire con certezza se la reinstallazione faceva parte della correzione, ma questo è stato sicuramente utile. Quindi ti sto dando la vittoria

Quando client e server si trovano su host diversi, psql deve essere invocato da psql -h <server> [optional other arguments]dove <server> è il nome host o l'indirizzo IP (e non è localhost) del server (casella Ubuntu in questo caso). Nella domanda non sembra che tu lo stia chiamando in questo modo, quindi supponevo che tutti i comandi fossero stati avviati sul server. Ad ogni modo, sono davvero convinto che la reinstallazione sia stata una misura ragionevole anche se la connessione avrebbe potuto essere stabilita.

Lo sto chiamando come: psql -U postgres -h localhost da quando ho una configurazione di port forwarding vagabondo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.