Come connettersi a un database PostgreSQL remoto su Ubuntu usando pgAdmin3?


22

Sto cercando di installare un database PostgreSQL su una macchina Ubuntu. Vorrei essere in grado di accedervi usando pgAdmin3 da una macchina remota. Come lo installo?

Ho installato il database PostgreSQL su Ubuntu usando:

sudo apt-get install postgresql

Nel mio /etc/postgresql/9.1/main/pg_hba.confho questa linea:

host    all    all    all    password

quindi dovrebbe accettare connessioni da tutti gli indirizzi IPv4 e le password devono essere inviate in chiaro (questo è per motivi di sviluppo).

Se eseguo questo comando per vedere quali servizi sono in esecuzione:

sudo netstat -tulpn

Vedo queste righe che indicano che PostgreSQL accetta connessioni sulla porta predefinita:

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

Quando provo a connettermi a questo server PostgreSQL da un computer remoto sulla stessa rete locale ricevo questo messaggio di errore:

Il server non ascolta

Il server non accetta connessioni: la libreria delle connessioni riporta

impossibile connettersi al server: connessione rifiutata Il server è in esecuzione sull'host "10.0.1.7" e accetta connessioni TCP / IP sulla porta 5432?

Ho usato postgrescome nome utente e nessuna password. Ma ho anche provato con postgresla password. Sul server locale posso accedere usando:

sudo -u postgres psql postgres

Come posso collegarmi a un database PostgreSQL in esecuzione su Ubuntu da una macchina remota usando pgAdmin3?

Risposte:


25

La riga nel rapporto netstat mostra che il database è in ascolto solo su localhost: 5432 (127.0.0.1) per le connessioni tcp in entrata.

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

Quindi può accettare solo connessioni tcp locali indipendentemente dalle autorizzazioni specificate in pg_hba.conf. pg_hba.conf specifica solo le connessioni consentite, ma non specifica quali interfacce ascolterà il tuo servizio.

Gli indirizzi su cui il server è in ascolto sono specificati con GUC Listen_addresses in postgresql.conf . Se si desidera che il server ascolti le connessioni remote, è necessario specificare l'ip (s) che si desidera ascoltare o *ascoltare su tutte le interfacce disponibili sull'host.

Per far sì che il tuo server postgresql ascolti tutte le interfacce sull'host, dovresti avere la seguente riga in postgresql.conf:

listen_addresses = '*'

ma ho già specificato allnel pg_hba.conffile ... quindi dovrebbe accettare le connessioni da tutti gli indirizzi IP.
Jonas,

Forse avrei potuto dirlo più chiaramente. pg_hba non specifica ciò su cui il database è in ascolto, ma solo quali connessioni protocollo / db / user / remote-addr sono consentite.
dbenhur,

Ok, quindi come posso risolvere questo problema? Hai qualche suggerimento?
Jonas,

1
lo risolvi inserendo una riga listen_addresses = '*'in postgresql.conf e riavviando il server.
dbenhur,

Grazie, questo ha risolto questo problema. Ora ho appena avuto problemi con la password predefinita :(
Jonas
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.