Es kann keine Verbindung zur entfernten postgresql-Datenbank hergestellt werden

16

Ich versuche, eine Verbindung zu einer entfernten psql-Datenbank herzustellen. Bevor ich den Eintrag pg_hba.conf mit der IP-Adresse des Clients hinzufügte, wurde eine Fehlermeldung angezeigt:

xdev@xdevbox:~$ psql -U postgres testdb -h 10.1.1.47
psql: FATAL:  no pg_hba.conf entry for host "10.201.50.71", user "postgres", database "testdb", SSL off

Ich habe die IP des Clients mit Vertrauenseinstellungen hinzugefügt. Ich habe auch die Listen-Adresse in der postgres.conf auf dem Server geändert, um "*" anzuhören. Dann habe ich den Datenbankserver mit dem Befehl /etc/init.d/postgresql restart neu gestartet.

Wenn ich jetzt versuche, eine Verbindung herzustellen, wird folgende Fehlermeldung angezeigt:

psql: could not connect to server: Connection refused
    Is the server running on host "10.1.1.47" and accepting
    TCP/IP connections on port 5432?

In postgresql.conf ist der Port auf 5432 gesetzt. Ich bin nicht sicher, was ich sonst überprüfen soll.

Vielen Dank

Punkt
quelle
Können Sie diese Adresse anpingen?
Dezso
1
Ich würde sagen, die Datenbank wurde beim Neustart nicht korrekt neu gestartet. Überprüfen Sie die PostgreSQL-Protokolldateien auf den Grund - wahrscheinlich ein Tippfehler pg_hba.conf.
Craig Ringer
Ich musste die Listen-Adresse von * auf die spezifische IP-Adresse ändern.
Punkt

Antworten:

22

Sie müssen die folgenden zwei Dateien konfigurieren

pg_hba.conf

host all all 0.0.0.0/0 md5

postgresql.conf

listen_addresses='*'

Sie müssen überprüfen, ob der Port 5432 geöffnet ist: http://www.yougetsignal.com/tools/open-ports/

Wenn dies nicht der Fall ist, fügen Sie eine Regel hinzu iptables:

iptables -A INPUT -s 0/0 -p tcp --dport 5432 -j ACCEPT

0/0: Wenn Sie möchten, dass jemand darauf zugreift. Sie können eine bestimmte IP-Adresse oder einen bestimmten IP-Adressbereich festlegen.

Dänisch Khakwani
quelle
1
Nur eine Ergänzung. Sie müssen kein externes Tool verwenden. Verwenden telnet [yourServerIp] 5432Sie nur, wenn Sie kein Telnet installiert haben, das Sie PowerShellbeispielsweise unter Windows verwenden können.
Ionische
@Ionic das stimmt
Danish Khakwani
2
Naja, nenn mich paranoid, aber ich vertraue nicht zu vielen Diensten im Netz. ;-) Nur um sich dessen bewusst zu sein. :-)
Ionic
Port-Checking-Tool hat mir hier geholfen
Shobi