Wie stehe ich mit Pgadmin3 eine Verbindung zu einer Remote -PostgreSQL -Datenbank auf Ubuntu her?
-
22-10-2019 - |
Frage
Ich versuche, eine PostgreSQL -Datenbank auf einem Ubuntu -Gerät einzurichten. Ich möchte mit Pgadmin3 von einem Remote -Computer mit Pgadmin3 zugreifen können. Wie richte ich das ein?
Ich habe die PostgreSQL -Datenbank auf Ubuntu mithilfe von: installiert:
sudo apt-get install postgresql
In meinem /etc/postgresql/9.1/main/pg_hba.conf
Habe ich diese Zeile:
host all all all password
Daher sollten Verbindungen von allen IPv4-Adressen akzeptiert werden, und Passwörter sollten in klarem Text gesendet werden (dies stammt 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, die zeigen, dass PostgreSQL Verbindungen am Standardport annimmt:
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
3561/postgres
Wenn ich versuche, eine Verbindung zu diesem PostgreSQL -Server von einem Remote -Computer auf demselben lokalen Netzwerk herzustellen, erhalte ich diese Fehlermeldung:
Server hört nicht zu
Der Server akzeptiert keine Verbindungen: Die Verbindungsbibliotheksberichte
Könnte keine Verbindung zum Server herstellen: Die Verbindung verweigert sich der Server auf Host "10.0.1.7" und das Akzeptieren von TCP/IP -Verbindungen auf Port 5432?
ich benutzte postgres
als Benutzername und kein Passwort. Aber ich habe es auch versucht mit postgres
als Passwort. Auf dem lokalen Server kann ich mich mit:
sudo -u postgres psql postgres
Wie kann ich eine Verbindung zu einer PostgreSQL -Datenbank herstellen, die auf Ubuntu von einem Remote -Computer mit PGADMIN3 ausgeführt wird?
Lösung
Die Zeile in Ihrem Netstat -Bericht zeigt, dass die Datenbank nur auf Localhost: 5432 (127.0.0.1) für eingehende TCP -Verbindungen zuhört.
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
So kann es nur lokale TCP -Verbindungen akzeptieren, unabhängig davon, welche Berechtigungen Sie in pg_hba.conf angegeben haben. pg_hba.conf gibt nur zulässige Verbindungen an, gibt jedoch nicht an, welche Schnittstellen Ihr Dienst anhören wird.
Die Adressen, auf die der Server hört, wird mit dem angegeben Hören_adresse GUC in postgreSQL.conf. Wenn der Server auf Remote -Verbindungen zuhören soll, sollten Sie die IP (en) angeben, dass Sie ihn anhören oder *
So hören Sie alle verfügbaren Schnittstellen des Hosts an.
Damit Ihr PostgreSQL Server alle Schnittstellen auf dem Host anhört, sollten Sie die folgende Zeile in postgreSQL.conf haben:
listen_addresses = '*'