Dies bedeutet, dass Postgres versucht, einen Benutzer mithilfe des Ident-Protokolls zu authentifizieren, und dies nicht kann. Ident auth funktioniert so:
- Sie haben die Datenbankrolle 'foo' in der Datenbank 'db'
- Ihre
pg_hba.conf
Datei (in /etc/postgres-something/main
) definiert "Ident" als das Protokoll zum Herstellen einer Verbindung zur Datenbank db
für Benutzer, die Verbindungen von bestimmten Hosts 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:
- Auf dem Computer, von dem aus Sie eine Verbindung herstellen möchten, ist kein Ident-Server aktiv . Testen Sie dies, indem Sie versuchen, über Port 113 eine Verbindung herzustellen. Wenn dies fehlschlägt, installieren Sie einen Ident-Server (z
sudo apt-get install oidentd
. B. ).
- Es gibt einen Ident-Server, aber keine Datenbankrolle , die dem Namen entspricht, mit dem Sie eine Verbindung herstellen möchten ('foo' im obigen Beispiel). Erstellen Sie es also, indem Sie sich mit Superuser-Rechten irgendwie mit der Datenbank verbinden
CREATE ROLE foo
. Alternativ können Sie einen Eintrag zu hinzufügen /etc/postgresql/.../main/pg_ident.conf
.
- Möglicherweise stimmt der Shell-Benutzername nicht mit der Datenbankrolle überein . Sie können dies möglicherweise testen, indem Sie während einer laufenden Verbindung eine Verbindung zum Ident-Server herstellen und die richtigen Portnummern übergeben.
Vielleicht möchten Sie sich tatsächlich mit einem Passwort verbinden , 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
/var/lib/psql/data
Ich bin mir nicht sicher über die Ursachen, aber das hat es für mich behoben:
im
pg_hba.conf
dazu wechseln:
Exakter Fehler:
Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
quelle
Fügen Sie unter CentOS die folgende Zeile hinzu
/var/lib/pgsql/9.3/data/pg_hba.conf
:Und die anderen Einträge auskommentieren.
Natürlich ist diese Einstellung nicht sicher, aber wenn Sie nur an einer Entwicklungs-VM wie mir herumspielen, ist es wahrscheinlich in Ordnung ...
quelle
Wenn Sie dies noch nicht versucht haben, überprüfen Sie Ihre Datei pg_hba.conf. Der Name lautet /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20). 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 auf' trust '(weitere Informationen finden Sie in den Postgres-Dokumenten). Starten Sie die Maschine neu, um sicherzustellen, dass alles sauber gestartet und die neuen Parameter gelesen werden.
Hoffentlich heilt dies Ihre Leiden. Es löste meine Probleme auf Fedora 20 mit PostgreSQL 9.3.
quelle
pg_ctl reload
von der Konsole aus oderSELECT pg_reload_conf();
beim Ausführen von SQL als privilegierter Benutzer zu verwenden.