Ich habe PostgreSQL 9.3 auf einem Server mit Ubuntu Server 14.04 installiert.
Wenn ich ssh in den Server über das Terminal einbinde, kann ich mich mit psql verbinden. Wenn ich jedoch versuche, pgAdmin III für die Remote-Verbindung zu konfigurieren, erhalte ich Folgendes:
Server hört nicht zu Der Server akzeptiert keine Verbindungen: die Verbindungsbibliotheksberichte konnten keine Verbindung zum Server herstellen: Verbindung abgelehnt Läuft der Server auf dem Host "172.24.3.147" und akzeptiert TCP/IP-Verbindungen an Port 5432?
Wenn ich auf dem Server service postgresql status
laufe, bekomme ich:
9.3/main (port 5432): online
Also fehlt mir hier etwas Wichtiges.
BEARBEITEN
Wenn ich netstat -na
auf dem Server betreibe, bekomme ich (relevanten Teil, denke ich):
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 172.24.3.147:22 172.24.3.240:61950 ESTABLISHED
tcp 0 0 172.24.3.147:22 172.24.3.240:60214 ESTABLISHED
Sie müssen die Datei postgresql.conf bearbeiten und die Zeile mit 'listen_addresses' ändern.
Diese Datei finden Sie im Verzeichnis /etc/postgresql/9.3/main
.
Die Ubuntu-Standardkonfiguration hat nur die Schnittstelle localhost (oder 127.0.0.1) zugelassen. Dies ist ausreichend, wenn alle PostgreSQL-Clients auf demselben Computer als PostgreSQL-Server arbeiten. Wenn Sie den PostgreSQL-Server von anderen Computern aus verbinden möchten, müssen Sie diese Konfigurationszeile folgendermaßen ändern:
listen_addresses = '*'
Dann haben Sie auch die Datei pg_hba.conf . In dieser Datei haben Sie festgelegt, von welchen Computern Sie eine Verbindung zu diesem Server herstellen können und welche Authentifizierungsmethode Sie verwenden können. Normalerweise benötigen Sie eine ähnliche Zeile:
Host all all 192.168.1.0/24 md5
Bitte lesen Sie die Kommentare in dieser Datei ...
BEARBEITEN:
Nach der Bearbeitung von postgresql.conf und pg_hba.conf müssen Sie den postgresql-Server neu starten.
EDIT2: Highlited Konfigurationsdateien.
Ich hatte das gleiche Problem nach einem MacOS-System-Upgrade. Gelöst durch Aufrüsten des Postgres mit Gebräu. Details: Offenbar hat das System versucht, mit älteren Postgres 10-Einstellungen auf Postgres 11 zuzugreifen. Ich bin sicher, dass es irgendwo in der Vergangenheit mein Fehler war, aber zum Glück wurde alles mit dem Upgrade oben geklärt.
Hatte dasselbe Problem mit psql über die Befehlszeilenverbindung und pgAdmin, das keine Verbindung zu RDS mit AWS herstellt. Ich habe mein RDS auf "Öffentlich zugänglich" gesetzt. Ich stellte sicher, dass meine ACL- und Sicherheitsgruppen weit offen standen und immer noch ein Problem darstellten. Daher tat ich Folgendes: __.Sudo find . -name *.conf
Dann Sudo nano ./data/pg_hba.conf
Dann oben in Anweisungen in der Datei pg_hba.conf Host all all 0.0.0.0/0 md5
.__ automatisch angemeldet
Dies funktionierte auch in der Datei pg_hba.conf Host all all md5
ohne IP-Adresse und auch mit meiner IP-Adresse Host all all <myip>/32 md5
.
Als Nebenbemerkung befand sich mein RDS in meiner Standard-VPC. Ich hatte eine identische RDS-Instanz in meiner nicht standardmäßigen VPC mit identischen Sicherheitsgruppen-, ACL- und Sicherheitsgruppeneinstellungen zu meiner Standard-VPC, und ich konnte es nicht zum Laufen bringen. Nicht sicher warum, aber für einen anderen Tag.
Denken Sie auch daran, die Firewall-Einstellungen zu überprüfen. Nachdem ich meine pg_hba.conf
- und postgres.conf
-Dateien überprüft und überprüft hatte, fand ich schließlich heraus, dass meine Firewall alles überschrieb und somit Verbindungen blockierte
Das hat mich ein zweites Mal gebissen und ich dachte, es wäre erwähnenswert. Die Zeile listen_addresses = '*' in der postgresql.conf ist standardmäßig kommentiert. Entfernen Sie nach dem Aktualisieren unbedingt das Kommentarzeichen (# am Anfang), da andernfalls die Remoteverbindungen weiterhin blockiert werden.
Sie müssen wahrscheinlich entweder den Port öffnen, um auf ihn in Ihrem LAN (oder außerhalb) zuzugreifen, oder die Netzwerkadresse an den Port binden.