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


178

Hallo, ich versuche, eine Website zu starten, die mir gesendet wurde, 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 dem googeln heißt es, dass ich nur einen eintrag in der pg_hba.conf-datei für diesen bestimmten benutzer hinzufügen muss. das ist meine pg_hba.conf datei.

# 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

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


Haben Sie PostgreSQL selbst neu gestartet, nicht nur den Webserver? Versuchen Sie es SELECT pg_reload_conf().
Craig Ringer

Antworten:


220

Fügen Sie die folgende Zeile in Ihrer hinzu oder bearbeiten Sie sie postgresql.conf:

listen_addresses = '*'

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

# 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 restartoder dem entsprechenden Befehl für Ihr Setup hinzugefügt haben .


5
Beachten Sie, dass für diese zu arbeiten, ein Passwort für den Benutzer gesetzt worden sein : sudo -u <username> psql postgres, dann \passwordauf der resultierenden SQL Prompt fordern für eine Einstellung.
ijoseph

2
Vergessen Sie nicht, postgresql neu zu starten, nachdem Sie Folgendes hinzugefügt haben: service postgresql restart
ammills01

Wenn Sie zusätzliche Sicherheit benötigen, um die Verbindungen zu privaten Domänen (z. B. innerhalb eines Büros und nicht zum restlichen Internet) einzuschränken, können Sie die erste Zahl in 10, 172 oder 192 ändern, um sie an Ihr Netzwerk anzupassen. Beispiel: 172.0. 0.0 / 0 statt 0.0.0.0/0
Nate Wanner

22

Diese Lösung funktioniert für IPv4 / IPv6

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

am Schluss hinzufügen

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

und starten Sie den postgresql-Dienst neu

/etc/init.d/postgresql restart

12

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

Die folgende Zeile wurde hinzugefügt in pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

und dies wurde geändert in postgresql.conf, wie gezeigt:

listen_addresses = '*'  

Ich hatte diese Instanz auf einem Centos 7.3 und Postgres 9.5 in einer VM in Azure ausgeführt , da dies ein POC (Proof of Concept) war, den Sie ohne SSL in Ihrer tatsächlichen Produktumgebung nicht herstellen möchten.

Um eine Verbindung zur Instanz herzustellen, habe ich pgAdmin 4 auf macOS Sierra verwendet .


4
Nicht nur SSL ... für alles, was kein Proof-of-Concept ist und auf das Netzwerk zugegriffen werden kann, würden Sie Verbindungen nicht vertrauen , Sie würden eine gewisse Authentifizierung benötigen .
Joanolo

5

Fresh Postgres 9.5 installieren, Ubuntu.

Der Schlüssel war der lokale Verbindungstyp, 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

3

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


3
  1. Fügen Sie die folgende Zeile am Ende von hinzu pg_hba.conf:

    hostnossl all all 0.0.0.0/0 md5

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

    listen_addresses = '*'

  3. Sicherstellen , dass der Benutzer, der ein Passwort hat verbindet: (Beispiel Connect - Benutzer benannt postgres)

    ein. Führen Sie den folgenden psqlBefehl mit dem postgresBenutzerkonto aus:

    sudo -u postgres psql postgres

    b. Legen Sie das Passwort fest:

    # \password postgres

Bildbeschreibung hier eingeben


1
Verwenden Sie kein Vertrauen für
Remoteverbindungen

2

Suchen 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

1

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

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

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

Lassen Sie die Verbindung unbedingt zu. 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 hier


0

Anweisungen für Debian-Benutzer.

Login als posgres Benutzer:

$ 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)

Öffne pg_hba.conf:

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

Fügen Sie die Konfiguration hinzu, in der steht "Tragen Sie hier Ihre aktuelle Konfiguration ein":

# 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

-1

Es funktioniert nur mit der folgenden Konfiguration:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
host    all             all             0.0.0.0/0               md5


-4

Schreiben Sie einfach die folgende Sequenz in die Konfigurationsdatei:

const 
  pg                = require('pg'),
config          = require('./db-config'),
    dbOption    = {
      host    : ,
      port    : ,
      user    : ,
      password  :,
      database  : 
    },

  pool          = new pg.Pool(dbOption)
  pg.defaults.ssl = true;

Das ist alles. Die Datei db-configenthält die Spezifikationsdaten von Host, Benutzer, Passwort und Datenbank. Mit dieser kleinen Änderung funktioniert es perfekt sowohl vor Ort als auch im Passdienst (Heroku). Vollständig getestet.


Was (und wo) ist das db-config? Ist es eine XAMPP-Konfigurationsdatei?
ypercubeᵀᴹ
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.