it-swarm.com.de

Verbindung zum PostgreSQL-Server herstellen: FATAL: Kein Eintrag pg_hba.conf für Host

Hallo, ich versuche, eine an mich gesendete Website zu betreiben, aber danach ist dieser Fehler aufgetreten

connect to PostgreSQL server: FATAL: no pg_hba.conf entry for Host "4X.XXX.XX.XXX", user "userXXX", database "dbXXX", SSL off in C:\xampp\htdocs\xmastool\index.php on line 37

nach Googeln heißt es, dass ich nur einen Eintrag in der Datei pg_hba.conf für diesen bestimmten Benutzer hinzufügen muss. Dies ist meine Datei pg_hba.conf.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
local dbXXX userXXX md5
Host    dbXXX  userXXX  XX.XXX.XXX.XXX           md5
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#Host    replication     postgres        127.0.0.1/32            md5
#Host    replication     postgres        ::1/128                 md5

danach bleibt der Fehler jedoch weiterhin bestehen. Ich habe meinen XAMPP-Server mehrmals neu gestartet, aber es werden keine Änderungen angezeigt. Danke im Voraus

204
Jin

Fügen Sie in Ihrem postgresql.conf Die folgende Zeile hinzu oder bearbeiten Sie sie:

listen_addresses = '*'

Fügen Sie die folgende Zeile als erste Zeile von pg_hba.conf Hinzu. Es ermöglicht allen Benutzern mit einem verschlüsselten Passwort den Zugriff auf alle Datenbanken:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
Host  all  all 0.0.0.0/0 md5

Starten Sie Postgresql neu, nachdem Sie dies mit service postgresql restart Oder dem entsprechenden Befehl für Ihr Setup hinzugefügt haben.

244
Jérôme Radix

Diese Lösung funktioniert für IPv4/IPv6

nano /var/lib/pgsql/data/pg_hba.conf

am Ende hinzufügen

Host all all      ::1/128      md5
Host all postgres 127.0.0.1/32 md5

und starten Sie dann den postgresql-Dienst neu

/etc/init.d/postgresql restart
25
Jose Nobile

Die Art und Weise, wie ich das gelöst habe, war:

Die folgende Zeile wurde in pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

und dies wurde in postgresql.conf, wie gezeigt:

listen_addresses = '*'  

Ich hatte diese Instanz auf einem Centos 7. und Postgres 9.5 in einem VM in Azure, vorausgesetzt dies war ein POC (Proof of Concept), den Sie in Ihrer tatsächlichen Produktumgebung nicht ohne SSL verbinden möchten.

Um eine Verbindung zu der Instanz herzustellen, habe ich pgAdmin 4 unter macOS Sierra verwendet.

13
Roberto Lopez

Fresh Postgres 9.5 installieren, Ubuntu.

Der Schlüssel war der Verbindungstyp lokal, da psql eine Domain-Socket-Verbindung verwendet.

pg_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
local all all md5
Host  all  all 0.0.0.0/0 md5
6
willianpts
  1. Fügen Sie die folgende Zeile am Ende von pg_hba.conf:

    hostnossl all all 0.0.0.0/0 md5

  2. Hinzufügen/Ändern der Zeile in postgresql.conf:

    listen_addresses = '*'

  3. Stellen Sie sicher, dass der Benutzer, der eine Verbindung herstellt, ein Kennwort hat: (Beispiel für einen Verbindungsbenutzer mit dem Namen postgres)

    ein. Führen Sie den folgenden Befehl psql mit dem Benutzerkonto postgres aus:

    Sudo -u postgres psql postgres

    b. Legen Sie das Passwort fest:

    # \password postgres

(enter image description here

4
nguyên

Ich hatte den gleichen Fehler, als ich versuchte, über einen SSH-Tunnel eine Verbindung zu einer lokalen Datenbank herzustellen. Ich habe es gelöst, indem ich den Hostnamen von localhost in 127.0.0.1 Geändert habe.

3
Finesse

Anleitung für Debian-Benutzer.

Melden Sie sich als posgres-Benutzer an:

$ Sudo su - postgres

Rufen Sie den Speicherort von pg_hba.conf ab, indem Sie die Datenbank abfragen:

$ psql -c "SHOW hba_file;"

              hba_file               
-------------------------------------
/etc/postgresql/11/main/pg_hba.conf
(1 row)

Öffnen Sie pg_hba.conf:

nano /etc/postgresql/11/main/pg_hba.conf

Fügen Sie die Konfiguration dort hinzu, wo "Geben Sie hier Ihre aktuelle Konfiguration ein" steht:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
Host  all  all 0.0.0.0/0 md5

Melden Sie sich bei Ihrem Benutzer ab:

$ exit
logout

Starten Sie Ihren Postgres-Server neu, damit die Änderungen wirksam werden:

$ Sudo systemctl restart postgresql
2

Finden Sie die richtige Konfigurationsdatei:

su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"

Fügen Sie am Ende der Datei Folgendes hinzu:

local all all peer

Starten Sie dann Ihre PostgreSQL-Anwendung neu:

/bin/systemctl restart postgresql*.service
2
Feriman

Das unten hat bei mir funktioniert: (pg_hba.conf)

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only     
local   all             all                                     md5
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
Host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust
Host    all             all             0.0.0.0/0               trust

vertrauen

Erlaube die Verbindung bedingungslos. Mit dieser Methode kann sich jeder, der eine Verbindung zum PostgreSQL-Datenbankserver herstellen kann, als beliebiger PostgreSQL-Benutzer anmelden, ohne dass ein Kennwort oder eine andere Authentifizierung erforderlich ist.

md5

Fordern Sie den Client auf, ein Kennwort mit doppeltem MD5-Hash für die Authentifizierung anzugeben.

weitere Informationen finden Sie unter hier

1
Ravistm

In meinem Fall musste ich die genaue Zeile hinzufügen, wie in den Fehlerinformationen angegeben. Kann nicht umgangen werden, indem in der Regel "alle" Benutzer mit allen IPs hinzugefügt werden. Jetzt ist es wie:

PosgreSQL 10.5 unter CentOS 7.

# IPv4 local connections:
Host    all             all             127.0.0.1/32                    md5
Host    <db_name>       postgres        <my_client_machine_ip>/32       md5
1
WesternGun