So sieht die Meldung aus
psql: error: connection to server at "127.0.0.1", port 5432 failed: FATAL: password authentication failed for user "appuser"
2026-10-12 09:14:03 CEST [4121] FATAL: password authentication failed for user "appuser"
2026-10-12 09:14:03 CEST [4121] DETAIL: Connection matched pg_hba.conf line 113: "host all all 127.0.0.1/32 scram-sha-256"Häufige Ursachen
- Das Passwort ist falsch, z. B. ein altes in der App-Konfiguration, in einer Umgebungsvariable oder in
~/.pgpass. - Die Rolle hat kein Passwort, oder es wurde anders gesetzt, als es die Zeile erwartet.
- Eine andere
pg_hba.conf-Zeile greift zuerst. Der erste Treffer gewinnt, daher kann ein anderer Benutzer, eine andere Datenbank, Adresse oder Methode gelten. - Sonderzeichen im Passwort zerstören eine Verbindungs-URL, etwa
@,:,/oder%, und müssen prozentkodiert werden. - Der Benutzername ist anders geschrieben als die Rolle in der Datenbank, auch in der Groß-/Kleinschreibung.
Prüfen
- Welche Rollen gibt es und dürfen sich anmelden?
sudo -u postgres psql -c '\du' - Welche Zeile hat die fehlgeschlagene Anmeldung getroffen? DETAIL im Log lesen
sudo tail -n 30 /var/log/postgresql/postgresql-*-main.log - Aktive Regeln der Reihe nach
sudo -u postgres psql -c 'SELECT line_number, type, database, user_name, address, auth_method FROM pg_hba_file_rules' - Verwendete Passwort-Verschlüsselung
sudo -u postgres psql -c 'SHOW password_encryption'
Lösung
- Ein neues Passwort interaktiv setzen, damit es nicht in der Shell-History landet:
sudo -u postgres psql, dann\password appuser. - Dasselbe Passwort in der App-Konfiguration verwenden. Sonderzeichen in einer URL prozentkodieren oder auf getrennte Parameter für Host, Benutzer und Passwort wechseln.
- Reihenfolge und Inhalt der
pg_hba.conf-Zeilen korrigieren und neu laden:sudo systemctl reload postgresql. Nutze nietrustfür Netzwerkadressen als schnelle Lösung. - Unterstützt eine alte Client-Bibliothek nur md5, die Bibliothek aktualisieren, statt die Sicherheit des Servers zu senken. Nach einer Änderung von
password_encryptiondie Passwörter neu setzen. - Einen veralteten Eintrag in
~/.pgpassoder eine VariablePGPASSWORDentfernen, die das Passwort überschreibt, das du zu nutzen glaubst.
Häufige Fragen
Warum klappt psql auf dem Server, aber nicht aus der App?
Lokal nutzt der Socket oft eine andere Regel (peer) als das Netzwerk (scram-sha-256). Teste mit psql -h 127.0.0.1, um denselben Weg wie die App zu nehmen.
Wie unterscheidet sich das von „no pg_hba.conf entry“?
Hier hat eine Zeile gegriffen und das Passwort ist gescheitert. Bei „no pg_hba.conf entry“ hat gar keine Zeile gepasst, der Server lehnt ab, bevor er ein Passwort verlangt.