Accesso remoto al database postgresql


46

Ho bisogno di accedere a un database postgresql da una macchina remota su un VPS su DigitalOcean in esecuzione 12.10 e postgresql 9.1.

Come faccio a fare questo? Ho notato che la porta 5432 è chiusa, come posso aprirla?


1
Seguire i passaggi indicati in javabypatel.blogspot.in/2015/07/… e modificare il numero di porta presente nel file postgresql.conf. dopo aver cambiato porta riavviare il server PostgreSQL.
Jayesh,

L'URL pubblicato da @Jayesh ha funzionato. Ho seguito le istruzioni e ho collegato con successo uno dei miei computer di sviluppo a un altro (da Windows con pgAdmin4 a Ubuntu 18.04 postgresql 10.9)
EAmez

Risposte:


79

Per aprire la porta 5432 modifica il tuo /etc/postgresql/9.1/main/postgresql.confe cambia

listen_addresses='localhost'

per

listen_addresses='*'

e riavvia il tuo DBMS

invoke-rc.d postgresql restart

ora puoi connetterti con

$ psql -h hostname -U username -d database

se non sei in grado di autenticarti, allora devi concedere al tuo utente i diritti di accesso al tuo database

Modifica il tuo

/etc/postgresql/9.1/main/pg_hba.conf

e aggiungi

host all all all md5

(Questo è per un accesso completamente aperto. Per un controllo più rigoroso, consultare la documentazione pg_hba.conf e regolare in base alle proprie esigenze).

D'ora in poi avrai bisogno anche di una ricarica

invoke-rc.d postgresql reload

Non ho bisogno di dire che questa è una configurazione di base, ora dovresti pensare a modificare il tuo firewall e migliorare la sicurezza del tuo DBMS.


4
In particolare, è necessario abilitare SSL.
Craig Ringer,

Okey, ho provato questo, ma quando provo a connettermi usando pgAdmin dal mio computer, ottengo "Il server non è in ascolto". Ho aggiunto iptables e quando eseguo iptables -L il seguente mostra: ACCETTA tcp - ovunque ovunque tcp dpt: postgresql Quando si controlla IP e PORT su questo sito ( yougetsignal.com/tools/open-ports ), dice che il porto è chiuso
Øyvind

2
il server è in ascolto? verificare connetstat -nlt|grep :5432

1
Vorrei inserire la riga host in modo più rigoroso:host <database> <user> <remote_client_IPaddress>/24 md5
gc5,

Per Postgresql versione 9.5 potrebbe essere necessario riavviare il server prima che i messaggi di ascolto abbiano effetto.
Heather92065,

26

Questo non funziona più, se mai:

ospita tutto * md5

Le righe possibili corrette per questo sono:

ospitare tutto tutto il range 0.0.0.0/0 md5 # ipv4

ospitare tutti tutti: gamma 0/0 md5 # ipv6

ospita tutti tutti tutti i md5 #all ip

fonte


4
Questo ha sicuramente fatto il trucco. La risposta sopra sicuramente non ha funzionato.
Mike,

Si prega di @Mike esprimere ciò che è corretto: host all all all md5funzionerà bene? È corretto? qualche problema di sicurezza?
Peter Krauss,

@peterkrauss Sì, ospita tutti tutti md5 ha funzionato per me. Problema di sicurezza? Certo che lo è, ma per quello che stavo facendo andava bene. (Rete interna)
Mike

3

Per il messaggio "server non in ascolto", ciò che mi è accaduto è che non ho cancellato # sull'archivio postgresql.conf intendo:

# Listen_addresses = 'localhost'

per:

listen_addresses = '*'

(Mi scusi per il mio inglese).


0

La risposta più votata e accettata ha serie richieste di sicurezza. Questo metodo è disabilitato per impostazione predefinita per buoni motivi.

Utilizzare meglio il port forwarding locale con ssh:

ssh -L local_port:localhost:foreign_port user@server

Inizia il port forwarding:

ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com

(Cambia le porte locali ed esterne per adattarle alla tua configurazione).

Quindi è possibile connettersi direttamente al database dal computer locale:

psql -U db_user -p local_port -l
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.