Wie verbinde ich mich mit pgAdmin3 unter Ubuntu mit einer entfernten PostgreSQL-Datenbank?

22

Ich versuche, eine PostgreSQL-Datenbank auf einem Ubuntu-Rechner einzurichten. Ich möchte mit pgAdmin3 von einem entfernten Rechner darauf zugreifen können. Wie richte ich das ein?

Ich habe die PostgreSQL-Datenbank unter Ubuntu installiert mit:

sudo apt-get install postgresql

In meiner /etc/postgresql/9.1/main/pg_hba.confhabe ich diese Zeile:

host    all    all    all    password

Daher sollte es Verbindungen von allen IPv4-Adressen akzeptieren und Passwörter sollten im Klartext gesendet werden (dies ist aus Entwicklungsgründen).

Wenn ich diesen Befehl ausführe, um zu sehen, welche Dienste ausgeführt werden:

sudo netstat -tulpn

Ich kann diese Zeilen sehen, das zeigt, dass PostgreSQL Verbindungen auf dem Standardport akzeptiert:

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

Wenn ich versuche, von einem Remotecomputer im selben lokalen Netzwerk aus eine Verbindung zu diesem PostgreSQL-Server herzustellen, wird folgende Fehlermeldung angezeigt:

Server hört nicht zu

Der Server akzeptiert keine Verbindungen: Die Verbindungsbibliothek meldet

Verbindung zum Server konnte nicht hergestellt werden: Verbindung abgelehnt Läuft der Server auf Host "10.0.1.7" und akzeptiert TCP / IP-Verbindungen auf Port 5432?

Ich habe postgresals Benutzername und kein Passwort verwendet. Ich habe es aber auch mit postgresals Passwort versucht . Auf dem lokalen Server kann ich mich einloggen mit:

sudo -u postgres psql postgres

Wie kann ich mit pgAdmin3 von einem entfernten Rechner aus eine Verbindung zu einer PostgreSQL-Datenbank unter Ubuntu herstellen?

Jonas
quelle

Antworten:

25

Die Zeile in Ihrem Netstat-Bericht zeigt, dass die Datenbank nur localhost: 5432 (127.0.0.1) auf eingehende TCP-Verbindungen überwacht.

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

Daher kann es nur lokale TCP-Verbindungen akzeptieren, unabhängig von den Berechtigungen, die Sie in der Datei pg_hba.conf angegeben haben. pg_hba.conf gibt nur zulässige Verbindungen an, nicht jedoch die Schnittstellen, auf denen Ihr Dienst empfangsbereit ist.

Die Adressen, die der Server abhört, werden mit der GUC listen_addresses in postgresql.conf angegeben . Wenn Sie möchten, dass der Server auf Remoteverbindungen wartet, müssen Sie die IP-Adressen angeben, die abgehört werden sollen, oder *alle verfügbaren Schnittstellen auf dem Host abhören.

Damit Ihr postgresql-Server alle Schnittstellen auf dem Host überwacht, sollte in postgresql.conf die folgende Zeile stehen:

listen_addresses = '*'
dbenhur
quelle
aber ich habe es schon allin der pg_hba.confdatei angegeben ... also sollte es verbindungen von allen ip-adressen akzeptieren.
Jonas
Vielleicht hätte ich es klarer sagen können. pg_hba legt nicht fest, was die Datenbank abhört, sondern nur, welche Protokoll- / Datenbank- / Benutzer- / Remote-Adr-Verbindungen zulässig sind.
Dbenhur
Ok, wie behebe ich das? hast du irgendwelche vorschläge
Jonas
1
Sie beheben das listen_addresses = '*'Problem, indem Sie eine Zeile in die Datei postgresql.conf einfügen und den Server neu starten.
Dbenhur
Danke, das hat das Problem gelöst. Jetzt habe ich nur Probleme mit dem Standard-Passwort :(
Jonas