Tutorial: Fehler "FATAL: password authentication failed postgres" auf Ubuntu beheben
Hier ist ein ausführliches Tutorial, wie du den PostgreSQL-Fehler "could not connect to server: FATAL: password authentication failed for user 'postgres'" unter Ubuntu behebst.
Dieser Fehler tritt meistens auf, wenn das Passwort für den Datenbank-Benutzer postgres falsch eingegeben wurde oder die Authentifizierungsmethode in der Konfigurationsdatei einen Zugriff verhindert.
Schritt 1: Zugriff über den System-Benutzer postgres
Unter Ubuntu ist PostgreSQL standardmäßig so konfiguriert, dass der System-Benutzer namens postgres sich mittels "Peer-Authentifizierung" ohne Passwort anmelden kann. Wir nutzen dies, um das Passwort zurückzusetzen.
- Öffne dein Terminal.
- Wechsel zum
postgres-User:sudo -i -u postgres - Starte die PostgreSQL-Konsole:
psql
Schritt 2: Das Passwort für den User postgres neu setzen
Sobald du in der PostgreSQL-Eingabeaufforderung (postgres=#) bist, kannst du ein neues Passwort vergeben:
- Gib folgenden Befehl ein (ersetze
dein_neues_passwortdurch dein gewünschtes Passwort):ALTER USER postgres WITH PASSWORD 'dein_neues_passwort'; - Verlasse die Konsole mit:
\q - Kehre zu deinem normalen Benutzer zurück:
exit
Schritt 3: Die Authentifizierungsmethode prüfen (pg_hba.conf)
Falls die Anmeldung immer noch fehlschlägt, liegt es wahrscheinlich an der Datei pg_hba.conf. Diese steuert, welche Verschlüsselung für die Anmeldung verlangt wird.
-
Finde heraus, wo deine Konfigurationsdatei liegt (die Versionsnummer kann variieren):
ls /etc/postgresql/ -
Öffne die Datei mit einem Editor (Beispiel für Version 15):
sudo nano /etc/postgresql/15/main/pg_hba.conf -
Suche die Zeilen am Ende der Datei, die so aussehen:
# IPv4 local connections: host all all 127.0.0.1/32 md5- md5 oder scram-sha-256: Erfordert ein Passwort.
- trust: Erlaubt jedem den Zugriff ohne Passwort (nur für lokales Debugging empfohlen!).
- peer: Nutzt den Ubuntu-Benutzernamen (funktioniert nur bei lokalen Verbindungen).
-
Wenn du dich mit Passwort über
localhostverbinden willst, stelle sicher, dass dortmd5oderscram-sha-256steht.
Schritt 4: PostgreSQL neu starten
Nach jeder Änderung an der pg_hba.conf musst du den Dienst neu starten, damit die Änderungen wirksam werden:
sudo systemctl restart postgresql
Schritt 5: Verbindung testen
Versuche nun erneut, dich zu verbinden:
psql -U postgres -h localhost -W
Das Terminal wird dich nun nach dem Passwort fragen, das du in Schritt 2 festgelegt hast.
Zusammenfassung der häufigsten Ursachen:
- Falsches Passwort: Lösung über
ALTER USERin Schritt 2. - Falsche Methode in pg_hba.conf: Wenn dort
peersteht, kannst du dich nicht per Passwort über TCP/IP (localhost) anmelden. Ändere es aufmd5. - Dienst nicht neu gestartet: Änderungen an der Konfiguration werden erst nach einem
restartaktiv.
Sicherheitshinweis: Nutze niemals die Methode trust in einer Produktionsumgebung, da dies jegliche Passwortabfrage deaktiviert.