Lösung 1:
Dies bedeutet, dass Postgres versucht, einen Benutzer mithilfe des Ident-Protokolls zu authentifizieren, dies jedoch nicht kann. Ident auth funktioniert so:
- Sie haben die Datenbankrolle „foo“ auf der Datenbank „db“
- Dein
pg_hba.conf
Datei (in/etc/postgres-something/main
) definiert 'Ident' als Protokoll für die Verbindung zur Datenbankdb
für Benutzer, die sich von bestimmten Hosts aus verbinden - Der Unix-Benutzername, der die Verbindung herstellt, ist 'foo'
- Ein Ident-Server, der auf dem Computer läuft, von dem aus sich der Benutzer verbindet, bestätigt, dass sein Benutzername wirklich „foo“ ist
Mögliche Ursachen und Lösungen:
- Es gibt keinen Ident-Server auf dem Computer ausgeführt wird, von dem aus Sie versuchen, eine Verbindung herzustellen. Testen Sie dies, indem Sie versuchen, sich auf Port 113 zu verbinden. Wenn dies fehlschlägt, installieren Sie einen Ident-Server (z. B.
sudo apt-get install oidentd
). -
Es gibt einen Ident-Server, aber keine Datenbankrolle dem Namen entsprechen, mit dem Sie sich verbinden möchten ('foo' im obigen Beispiel). Erstellen Sie es also, indem Sie sich irgendwie mit Superuser-Rechten mit der Datenbank verbinden und
CREATE ROLE foo
ausführen . Alternativ fügen Sie einen Eintrag zu/etc/postgresql/.../main/pg_ident.conf
hinzu (oder/var/lib/pgsql/12/data
oder wo auch immer). -
Möglicherweise stimmt der Shell-Benutzername nicht überein die Datenbankrolle. Sie können dies möglicherweise testen, indem Sie sich bei bestehender Verbindung mit dem Ident-Server verbinden und die richtigen Portnummern übergeben.
-
Vielleicht möchten Sie sich tatsächlich mit einem Passwort verbinden , nicht Ident. Bearbeiten Sie
pg_hba.conf
entsprechend archivieren. Ändern Sie beispielsweise:host all all 127.0.0.1/32 ident
zu
host all all 127.0.0.1/32 md5
Lösung 2:
Ich bin mir über die Ursachen nicht sicher, aber das hat es für mich behoben:
in pg_hba.conf
ändern Sie zu diesem:
hosten alle alle 127.0.0.1/32 md5
Genauer Fehler:Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
Lösung 3:
Fügen Sie unter CentOS die folgende Zeile zu /var/lib/pgsql/9.3/data/pg_hba.conf
hinzu :
host all all 127.0.0.1/32 trust
Und kommentieren Sie die anderen Einträge aus.
Diese Einstellung ist natürlich nicht sicher, aber wenn Sie nur auf einer Entwicklungs-VM wie mir herumspielen, ist es wahrscheinlich in Ordnung ...