it-swarm.com.de

Herstellen einer Verbindung zu einer externen Datenbank mit pgAdmin III

Ich versuche, von pgAdmin III (das auf beiden Computern installiert ist) eine Verbindung zu einer externen Datenbank herzustellen. Der Kunde beschwert sich:

Zugriff auf Datenbank verweigert

Der Server gewährt keinen Zugriff auf die Datenbank: Der Server meldet

FATAL: no pg_hba.conf entry for Host "192.168.108.161",
                                user "postgres",
                            database "postgres",
                                 SSL off 

Um auf eine Datenbank auf einem PostgreSQL-Server zuzugreifen, müssen Sie Ihrem Client zunächst den primären Zugriff auf den Server gewähren (Host Based Authentication). PostgreSQL überprüft die Datei pg_hba.conf, Wenn ein Muster vorhanden und aktiviert ist, das Ihrer Clientadresse/Ihrem Benutzernamen/Ihrer Datenbank entspricht, bevor Zugriffssteuerungslisten für SQL GRANT Ausgewertet werden.

Die anfänglichen Einstellungen in pg_hba.conf sind recht restriktiv, um unerwünschte Sicherheitslücken zu vermeiden, die durch nicht überprüfte, aber obligatorische Systemeinstellungen verursacht werden. Sie werden wahrscheinlich so etwas hinzufügen wollen

Host all all 192.168.0.0/24 md5 

In diesem Beispiel wird allen Benutzern im privaten Netzwerk 192.168.0.0/24 MD5-verschlüsselter Kennwortzugriff auf alle Datenbanken gewährt. Sie können den in pgAdmin III integrierten Editor pg_hba.conf Verwenden, um die Konfigurationsdatei pg_hba.conf Zu bearbeiten.

Nach dem Ändern von pg_hba.conf Müssen Sie ein erneutes Laden der Serverkonfiguration mit pg_ctl Oder durch Stoppen und Neustarten des Serverprozesses auslösen.

Wobei der Server ausdrücklich angibt, dass alle Verbindungen vom internen Netzwerk akzeptiert werden.

pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5
Host    all             all             127.0.0.1/32            md5
Host    all             all             ::1/128                 md5
Host    all             all             192.168.0.0/24          md5

Ich habe den Postmaster bereits neu gestartet, damit die Änderungen wirksam werden, und bin so weit gegangen, den gesamten Computer neu zu starten. Was könnte hier noch schief gehen?

7
Sean Allred

Diese Linie:

 Host alle alle 192.168.0.0/24 md5 

lässt Verbindungen von IPs durch, die mit 192.168.0.X übereinstimmen, wobei X ein beliebiges Byte ist.

Die IP-Adresse Ihrer Fehlermeldung lautet 192.168.108.161. Sie stimmt nicht mit diesem Muster überein, da 108 Nicht 0 Ist.

Um Adressen wie 192.168.X.Y Zu aktivieren, benötigen Sie anstelle von /16 Einen /24, Was bedeutet, dass nur die ersten 16 Bits festgelegt sind.

So was:

 Host alle 192.168.0.0/16 md5 

Vergessen Sie nicht, Postgresql neu zu laden. Verwenden Sie in den offiziellen Dokumenten pg_ctl reload. Wenn das nicht funktioniert, gibt es andere Möglichkeiten, dies unter diese Frage zu tun.

7
Daniel Vérité

Zwei Dinge fallen mir ein.

  1. Der erste besteht darin, sicherzustellen, dass der Server die Netzwerkschnittstelle überwacht. Standardmäßig hört es nur auf dem lokalen Host. Bearbeiten Sie Ihre postgresql.conf - Datei und ändern Sie:

    listen_addresses = 'localhost'
    

    Um stattdessen so auszusehen:

    listen_addresses = '*'
    
  2. Wenn Sie eine Remoteverbindung herstellen, benötigt Ihr postgres Benutzer ein Kennwort. Standardmäßig ist diesem Konto kein Kennwort zugeordnet, sodass nur die lokale vertrauenswürdige Anmeldung funktioniert. Damit die Remote-Kennwortanmeldung (z. B. md5 In pg_hba.conf`) funktioniert, fügen Sie entweder ein Kennwort hinzu oder erstellen Sie einen neuen Benutzer mit einem Kennwort.

Anstatt Host in pg_hba.conf Zu verwenden, sollten Sie auch hostssl verwenden, um zu erfordern, dass Remoteverbindungen SSL verwenden. Andernfalls werden die Anmeldeinformationen für Benutzername/Passwort im Klartext über die Leitung gesendet.

2
sehrope