Tutorial: Fehler "FATAL: password authentication failed postgres" auf Ubuntu beheben

Melden

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.

  1. Öffne dein Terminal.
  2. Wechsel zum postgres-User:
    sudo -i -u postgres
  3. 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:

  1. Gib folgenden Befehl ein (ersetze dein_neues_passwort durch dein gewünschtes Passwort):
    ALTER USER postgres WITH PASSWORD 'dein_neues_passwort';
  2. Verlasse die Konsole mit:
    \q
  3. 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.

  1. Finde heraus, wo deine Konfigurationsdatei liegt (die Versionsnummer kann variieren):

    ls /etc/postgresql/
  2. Öffne die Datei mit einem Editor (Beispiel für Version 15):

    sudo nano /etc/postgresql/15/main/pg_hba.conf
  3. 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).
  4. Wenn du dich mit Passwort über localhost verbinden willst, stelle sicher, dass dort md5 oder scram-sha-256 steht.

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 USER in Schritt 2.
  • Falsche Methode in pg_hba.conf: Wenn dort peer steht, kannst du dich nicht per Passwort über TCP/IP (localhost) anmelden. Ändere es auf md5.
  • Dienst nicht neu gestartet: Änderungen an der Konfiguration werden erst nach einem restart aktiv.

Sicherheitshinweis: Nutze niemals die Methode trust in einer Produktionsumgebung, da dies jegliche Passwortabfrage deaktiviert.

0