it-swarm.com.de

"psql: Verbindung zum Server konnte nicht hergestellt werden: Verbindung abgelehnt" Fehler beim Herstellen der Verbindung zur entfernten Datenbank

Ich versuche, eine Verbindung zu einer Postgres-Datenbank herzustellen, die auf einem Remote-Server mit dem folgenden Befehl installiert ist:

psql -h Host_ip -U db_username -d db_name

Dies ist der Fehler, der auftritt:

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

  1. Die installierte Postgres-Version ist 9.4.
  2. Hostbetriebssystem: Ubuntu 15.04
  3. Client-Betriebssystem: Centos 7

Ich habe bereits Folgendes versucht, aber das Problem bleibt ungelöst:

  1. Die pg_hba.conf-Datei wurde bearbeitet 

Host alle alle 0.0.0.0/0 md5

  1. 'Postgresql.conf' wurde bearbeitet und der Listenparameter wurde in geändert

listen_addresses = '*'

  1. Postgres-Dienst neu gestartet.
  2. Deaktivierte Firewall und iptables auf Host und Client.
  3. Ich überprüfte es, indem ich den psql-Befehl lokal ausführte, und es funktionierte.
  4. Ich habe die zweite Lösung aus dieser Frage probiert. Beim Ausführen von nmap erhielt ich die folgende Ausgabe:

Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-07 18:08 IST Nmap scan report for 10.17.250.250 Host is up (0.0000040s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http

Fehlt mir etwas? Hoffe, jemand kann helfen.

25
Poonam Anthony
cd /etc/postgresql/9.x/main/

geöffnete Datei mit dem Namen postgresql.conf

Sudo vi postgresql.conf

fügen Sie diese Zeile dieser Datei hinzu 

listen_addresses = '*'

dann öffnen Sie die Datei mit dem Namen pg_hba.conf

Sudo vi pg_hba.conf

und fügen Sie diese Zeile dieser Datei hinzu 

Host  all  all 0.0.0.0/0 md5

Es ermöglicht allen Benutzern mit einem verschlüsselten Passwort den Zugriff auf alle Datenbanken

starten Sie Ihren Server neu

Sudo /etc/init.d/postgresql restart
61
Thameem

Überprüfen Sie den in postgresql.conf definierten Port. Meine Installation von Postgres 9.4 verwendet den Port 5433 anstelle von 5432

11
jorge Godoy

Ich habe Probleme damit gehabt, als ich versuchte, eine Remote-Verbindung zu einer neuen PostgreSQL-Installation auf meinem Raspberry Pi herzustellen. Hier ist die vollständige Aufschlüsselung dessen, was ich getan habe, um dieses Problem zu lösen:

Öffnen Sie zunächst die PostgreSQL-Konfigurationsdatei und stellen Sie sicher, dass der Dienst außerhalb von localhost empfangsbereit ist.

Sudo [editor] /etc/postgresql/[version]/main/postgresql.conf

Ich habe nano verwendet, aber Sie können den Editor Ihrer Wahl verwenden, und während ich 9.1 installiert habe, wird dieses Verzeichnis für die installierte Version sein.

Suchen Sie bis zum Abschnitt "Verbindungen und Authentifizierung". Die erste Einstellung sollte 'listen_addresses' sein und könnte folgendermaßen aussehen:

#listen_addresses = 'localhost'     # what IP address(es) to listen on;

Die Kommentare auf der rechten Seite enthalten gute Anweisungen zum Ändern dieses Feldes. Die Verwendung des vorgeschlagenen '*' für alle wird gut funktionieren.

Bitte beachten Sie, dass dieses Feld mit # auskommentiert ist. In den Kommentaren wird standardmäßig "localhost" verwendet. Wenn Sie den Wert in '*' ändern, reicht dies nicht aus. Sie müssen die Einstellung auch durch Entfernen des führenden # auskommentieren. 

Es sollte jetzt so aussehen:

listen_addresses = '*'         # what IP address(es) to listen on;

Sie können auch die nächste Einstellung "Port" überprüfen, um sicherzustellen, dass Sie eine korrekte Verbindung herstellen. 5432 ist die Standardeinstellung. Dies ist der Port, zu dem psql versucht, eine Verbindung herzustellen, wenn Sie keinen Port angeben. 

Speichern und schließen Sie die Datei und öffnen Sie die Konfigurationsdatei für die Client-Authentifizierung, die sich in demselben Verzeichnis befindet:

Sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf

Ich empfehle, die Datei zu lesen, wenn Sie den Zugriff einschränken möchten, aber für grundlegende offene Verbindungen springen Sie zum Ende der Datei und fügen eine Zeile wie folgt hinzu:

Host all all all md5

Sie können statt der Leertaste die Tabulatortaste drücken, um die Felder mit den vorhandenen Spalten auszurichten, wenn Sie möchten.

Ich habe stattdessen eine Zeile hinzugefügt, die so aussah:

Host [database_name] pi 192.168.1.0/24 md5

Dies beschränkt die Verbindung auf nur einen Benutzer und nur eine Datenbank im Subnetz des lokalen Netzwerks.

Nachdem Sie Änderungen an der Datei gespeichert haben, müssen Sie den Dienst neu starten, um die Änderungen zu implementieren.

Sudo service postgresql restart

Jetzt können Sie mit dem folgenden Befehl überprüfen, ob der Dienst den richtigen Port offen überwacht.

Sudo netstat -ltpn

Wenn Sie es nicht als erhöht ausführen (mit Sudo), werden Ihnen nicht die Namen der Prozesse angezeigt, die diese Ports überwachen.

Einer der Prozesse sollte Postgres sein, und die lokale Adresse sollte geöffnet sein (0.0.0.0) und nicht auf den lokalen Verkehr beschränkt sein (127.0.0.1). Wenn es nicht geöffnet ist, müssen Sie Ihre Konfigurationsdateien überprüfen und den Dienst neu starten. Sie können erneut bestätigen, dass der Dienst den richtigen Port überwacht (Standardeinstellung ist 5432, Ihre Konfiguration kann jedoch anders sein).

Schließlich können Sie von einem Remote-Computer aus mit dem Befehl eine Verbindung herstellen:

psql -h [server ip address] -p [port number, optional if 5432] -U [postgres user name] [database name]
2
aherocalledFrog

Stellen Sie sicher, dass die Einstellungen in der Konfigurationsdatei korrekt angewendet werden.

vim /etc/postgresql/x.x/main/postgresql.conf

Versuchen Sie Folgendes, um die Protokolle anzuzeigen und Ihr Problem zu ermitteln.

tail /var/log/postgresql/postgresql-x.x-main.log
2
Amirio

In meinem Fall habe ich die Standard-Sicherheitsrichtlinie von Azure im Verwaltungsportal nicht geändert. Das Original ist Port 22 erlaubt und der Rest wird abgelehnt. Solange ich 5432-Port hinzufüge, wird alles gut.

0
new2cpp

Ich denke, Sie verwenden den Rechnernamen anstelle der IP des Hosts.

Ich habe die gleiche Fehlermeldung erhalten, als ich mit dem Namen der Maschine versuchte. Dies ist nur zulässig, wenn sich sowohl der Client als auch der Host im selben Netzwerk befinden und auf demselben Betriebssystem installiert ist.

0
Mohanavel T

Folgendes hat mir auf Macos Mojave geholfen:

$Sudo mv /usr/local/var/postgres /usr/local/var/postgres.save
$brew uninstall postgres
$brew install postgres
0
Meshack Mbuvi

Ich hatte genau das gleiche Problem mit meinen korrekten Konfigurationsdateien. In meinem Fall kommt das Problem vom Eduroam-WLAN, das ich verwendet habe: Wenn ich über ein anderes WLAN eine Verbindung herstelle, funktioniert alles. Es scheint, dass Eduroam Port 5432 blockiert, zumindest an meiner Universität.

0
Archimondain