it-swarm.com.de

Postgres-Fehlermeldung: FATAL: Ident-Authentifizierung für Benutzer "..." fehlgeschlagen

Angenommen, Sie sehen diese Nachricht:

FATAL:  Ident authentication failed for user "..."

Was sind die Ursachen dieser Fehlermeldung?

29
Steve Bennett

Dies bedeutet, dass Postgres versucht, einen Benutzer mithilfe des Ident-Protokolls zu authentifizieren, und dies nicht kann. Ident auth funktioniert folgendermaßen:

  • Sie haben die Datenbankrolle 'foo' in der Datenbank 'db'
  • Ihre pg_hba.conf Datei in /etc/postgres-something/main) definiert 'Ident' als das Protokoll für die Verbindung zur Datenbank db für Benutzer, die von bestimmten Hosts aus eine Verbindung herstellen
  • Der Unix-Benutzername, der die Verbindung herstellt, ist 'foo'.
  • Ein Ident-Server, der auf dem Computer ausgeführt wird, von dem aus der Benutzer eine Verbindung herstellt, bestätigt, dass sein Benutzername wirklich "foo" ist.

Mögliche Ursachen und Lösungen:

  1. Auf dem Computer, von dem aus Sie eine Verbindung herstellen möchten, wird kein Ident-Server ausgeführt. Testen Sie dies, indem Sie versuchen, eine Verbindung über Port 113 herzustellen. Wenn dies fehlschlägt, installieren Sie einen Ident-Server (z. B. Sudo apt-get install oidentd).
  2. Es gibt einen Ident-Server, aber es gibt keine Datenbankrolle , die mit dem Namen übereinstimmt, mit dem Sie eine Verbindung herstellen möchten (im obigen Beispiel 'foo'). Erstellen Sie es also, indem Sie sich mit Superuser-Rechten irgendwie mit der Datenbank verbinden und CREATE ROLE foo. Alternativ können Sie einen Eintrag zu /etc/postgresql/.../main/pg_ident.conf (oder /var/lib/pgsql/12/data oder wo auch immer).

  3. Möglicherweise stimmt der Shell-Benutzername nicht mit der Datenbankrolle überein . Sie können dies möglicherweise testen , indem Sie während einer Verbindung eine Verbindung zum Ident-Server herstellen und die richtigen Portnummern übergeben.

  4. Vielleicht möchten Sie tatsächlich eine Verbindung mit einem Passwort herstellen, nicht mit Ident. Bearbeiten Sie die pg_hba.conf Datei entsprechend. Ändern Sie zum Beispiel:

    Host all all 127.0.0.1/32 ident
    

    zu

    Host all all 127.0.0.1/32 md5
    
41
Steve Bennett

Ich bin mir nicht sicher über die Ursachen, aber das hat es für mich behoben:

im pg_hba.conf

ändern Sie dies:

Host alle alle 127.0.0.1/32 md5

Genauer Fehler: Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"

8
jacktrades

Fügen Sie unter CentOS die folgende Zeile zu /var/lib/pgsql/9.3/data/pg_hba.conf:

Host all all 127.0.0.1/32 trust

Und kommentieren Sie die anderen Einträge aus.

Natürlich ist diese Einstellung nicht sicher, aber wenn Sie nur an einer Entwicklung herumspielen VM wie ich, dann ist es wahrscheinlich in Ordnung ...

Ändern Sie für Centos 7 pg_hba.conf nach unten:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
#Host    all             all             127.0.0.1/32            ident
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
#Host    all             all             ::1/128                 ident
Host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     all                                     peer
#Host    replication     all             127.0.0.1/32            ident
#Host    replication     all             ::1/128                 ident
0
Kul Jeet

Wenn Sie dies noch nicht versucht haben, überprüfen Sie Ihre Datei pg_hba.conf. Es wird so etwas wie /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20) heißen; Möglicherweise müssen Sie 'find/-name pg_hba.conf' verwenden, um es zu finden.

Ändern Sie am Ende der Datei die 'METHOD'-Werte für lokale Tests in' trust '(vollständige Informationen finden Sie in den Postgres-Dokumenten). Starten Sie den Computer neu, um sicherzustellen, dass alles sauber gestartet und die neuen Parameter gelesen werden.

Hoffentlich heilt dies Ihre Leiden. Es hat meine Probleme mit Fedora 20 mit PostgreSQL 9.3 gelöst.

0
Alan Thompson