PostgreSQL-Fehler: no pg_hba.conf entry for host

FATAL:  no pg_hba.conf entry for host "10.0.0.23", user "app_user", database "appdb", SSL encryption

Zuerst die gute Nachricht: der Netzwerkpfad funktioniert und Sie haben PostgreSQL erreicht. Es hat Sie abgewiesen, weil keine Zeile in pg_hba.conf die Kombination in der Meldung trifft: Client-Adresse, Datenbank, Benutzer und ob die Verbindung SSL verwendet. Der Fehler liefert Ihnen alle vier — die Lösung ist das Schreiben einer Regel, die sie trifft.

Was dieser Fehler bedeutet

pg_hba.conf wird von oben nach unten ausgewertet, erste Übereinstimmung gewinnt — und eine Verbindung, die keine Zeile trifft, erhält diesen Fehler. Jede Zeile trifft nach Verbindungstyp (local, host, hostssl, hostnossl), Datenbank, Benutzer und Client-Adresse und nennt dann die anzuwendende Authentifizierungsmethode.

Das Ende der Meldung ("SSL encryption" / "no encryption") ist wichtiger, als es aussieht: eine hostssl-Zeile kann niemals einen Nicht-SSL-Versuch treffen und umgekehrt. Wenn die Meldung "no encryption" sagt und alle Ihre Regeln hostssl lauten, liegt die Lösung beim Client (sslmode=require), nicht in der Datei.

Häufige Ursachen

So diagnostizieren Sie ihn

Nehmen Sie die vier Werte aus der Fehlermeldung und gehen Sie die Regeln damit durch:

-- Die View zeigt die Regeln so, wie der Server sie gelesen hat,
-- mit etwaigen Parsing-Fehlern je Zeile:
SELECT line_number, type, database, user_name, address, auth_method, error
FROM pg_hba_file_rules;

Prüfen Sie der Reihe nach: gibt es eine Zeile, deren Verbindungstyp passt (SSL!)? deren Datenbankliste Ihre einschließt? deren Benutzerliste Ihren einschließt? deren Adresse die Client-IP aus der Meldung enthält?

So beheben Sie ihn

Fügen Sie eine so eng wie der tatsächliche Bedarf gefasste Regel hinzu und laden Sie dann neu:

# /etc/postgresql/.../pg_hba.conf — Beispiel: App aus dem privaten Subnetz, SSL, SCRAM
hostssl  appdb  app_user  10.0.0.0/24  scram-sha-256
SELECT pg_reload_conf();   -- oder: systemctl reload postgresql
🔍 Einen Schritt weiter: password authentication failed — eine Regel hat getroffen, aber die Prüfung der Zugangsdaten schlug fehl.