Fernzugriff auf die postgresql-Datenbank

46

Ich muss auf eine Postgresql-Datenbank von einem Remote-Computer auf einem VPS bei DigitalOcean zugreifen, auf dem 12.10 und Postgresql 9.1 ausgeführt werden.

Wie mache ich das? Ich habe festgestellt, dass Port 5432 geschlossen ist. Wie öffne ich diesen Port?

Øyvind
quelle
1
Befolgen Sie die Schritte in javabypatel.blogspot.in/2015/07/… und ändern Sie die Portnummer in der Datei postgresql.conf. Nach dem Ändern des Ports starten Sie den PostgreSQL-Server neu.
Jayesh
Url gepostet von @Jayesh hat den Trick gemacht. Befolgen Sie die Anweisungen und haben Sie einen meiner Entwicklungscomputer erfolgreich mit einem anderen verbinden lassen (von Windows mit pgAdmin4 auf Ubuntu 18.04 postgresql 10.9)
EAmez

Antworten:

78

Um den Port 5432 zu öffnen, bearbeite deinen /etc/postgresql/9.1/main/postgresql.confund ändere ihn

listen_addresses='localhost'

zu

listen_addresses='*'

und starten Sie Ihr DBMS neu

invoke-rc.d postgresql restart

Jetzt können Sie mit verbinden

$ psql -h hostname -U username -d database

Wenn Sie sich nicht authentifizieren können, müssen Sie Ihren Benutzern Zugriffsrechte auf Ihre Datenbank gewähren

Bearbeiten Sie Ihre

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

und hinzufügen

host all all all md5

(Dies ist für einen breiten, offenen Zugang. Für eine strengere Kontrolle konsultieren Sie die Dokumentation zu pg_hba.conf und passen Sie sie Ihren Bedürfnissen an.)

Hiernach brauchst du auch ein reload

invoke-rc.d postgresql reload

Ich muss nicht erwähnen, dass dies eine Grundkonfiguration ist. Jetzt sollten Sie darüber nachdenken, Ihre Firewall zu ändern und die Sicherheit Ihres DBMS zu verbessern.

Daniel Vérité
quelle
4
Insbesondere sollten Sie SSL aktivieren.
Craig Ringer
Okey, ich habe es versucht, aber wenn ich versuche, mit pgAdmin von meinem Computer aus eine Verbindung herzustellen, wird "Server hört nicht zu" angezeigt. Ich habe iptables hinzugefügt, und wenn ich iptables -L ausführe, wird Folgendes angezeigt: ACCEPT tcp - Überall Überall tcp dpt: postgresql Beim Überprüfen der IP und des PORT auf dieser Site ( yougetsignal.com/tools/open-ports ) wird das angezeigt Hafen ist geschlossen
Øyvind
2
Hört der Server zu? überprüfen Sie mitnetstat -nlt|grep :5432
1
Ich würde die Host-Zeile strenger einfügen:host <database> <user> <remote_client_IPaddress>/24 md5
GC5
Für Postgresql Version 9.5 müssen Sie möglicherweise den Server neu starten, damit die listen_addresses wirksam werden.
Heather92065
26

Das funktioniert nicht mehr, falls es jemals passiert ist:

host all all * md5

Die richtigen möglichen Zeilen dafür sind:

host all all 0.0.0.0/0 md5 # ipv4 range

host all all :: 0/0 md5 # ipv6 range

host all all all md5 #all ip

Quelle

Kethryweryn
quelle
4
Dies hat definitiv den Trick getan. Die obige Antwort hat definitiv nicht funktioniert.
Mike
Bitte @Mike ausdrücken, was ist richtig: host all all all md5wird gut funktionieren? Es ist richtig? irgendein Sicherheitsproblem?
Peter Krauss
@peterkrauss Ja, host all all all md5 hat bei mir funktioniert. Sicherheitsproblem? Natürlich ist es das, aber für das, was ich tat, war es in Ordnung. (Internes Netzwerk)
Mike
3

Für die Meldung "Server hört nicht zu", die mir passiert ist, dass ich kein # im Archiv postgresql.conf lösche, meine ich:

# listen_addresses = 'localhost'

zu:

listen_addresses = '*'

(Entschuldigung für mein Englisch).

mrlinux
quelle
0

Die am höchsten bewertete und akzeptierte Antwort hat schwerwiegende Sicherheitsbedrohungen. Diese Methode ist aus guten Gründen standardmäßig deaktiviert.

Verwenden Sie die lokale Portweiterleitung besser mit ssh:

ssh -L local_port:localhost:foreign_port user@server

Starten Sie die Portweiterleitung:

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

(Ändern Sie lokale und fremde Ports entsprechend Ihrer Konfiguration).

Dann können Sie direkt von Ihrem lokalen Computer aus eine Verbindung zur Datenbank herstellen:

psql -U db_user -p local_port -l
pLumo
quelle