1225 Stimmen

Fehlermeldung: Peer-Authentifizierung fehlgeschlagen für Benutzer "postgres", beim Versuch, pgsql mit Rails zum Laufen zu bringen.

Ich bekomme den Fehler:

FATAL: Peer-Authentifizierung fehlgeschlagen für Benutzer "postgres"

wenn ich versuche, PostgreSQL mit Rails zu verwenden.

Hier ist meine pg_hba.conf, meine Datenbank.yml und ein Dump des kompletten Traces.

Ich habe die Authentifizierung in pg_hba auf md5 geändert und verschiedene Dinge ausprobiert, aber nichts scheint zu funktionieren.

Ich habe auch versucht, einen neuen Benutzer und eine neue Datenbank gemäß Rails 3.2, FATAL: Peer-Authentifizierung fehlgeschlagen für Benutzer (PG::Error) zu erstellen.

Aber sie erscheinen weder in pgadmin noch wenn ich sudo -u postgres psql -l ausführe.

Hast du eine Idee, wo ich den Fehler gemacht habe?

12voto

Åsmund Punkte 1121

Wenn Sie die Standardkonfiguration beibehalten, aber für eine bestimmte Benutzer-/db-Verbindung die md5-Authentifizierung mit Socket-Verbindung wünschen, fügen Sie eine "local" -Zeile VOR der "local all/all" -Zeile hinzu:

# TYPE  DATABASE     USER         ADDRESS             METHOD

# "local" gilt nur für Unix-Domain-Socketverbindungen
local   dbname       username                         md5  # <-- diese Zeile
local   all          all                              peer
# IPv4-Verbindungen
host    all          all          127.0.0.1/32        ident
# IPv6-Verbindungen
host    all          all          ::1/128             ident

11voto

nirvanastack Punkte 455

Ich hatte das gleiche Problem.

Die Lösung von depa ist absolut korrekt.

Stellen Sie einfach sicher, dass Sie einen Benutzer konfiguriert haben, der PostgreSQL verwendet.

Überprüfen Sie die Datei:

$ ls /etc/postgresql/9.1/main/pg_hba.conf -l

Die Berechtigung für diese Datei sollte dem Benutzer erteilt werden, mit dem Sie sich in Ihrem psql angemeldet haben.

Weiterhin. Wenn Sie bis jetzt gut sind..

Aktualisieren Sie gemäß den Anweisungen von @depa.

d.h.

$ sudo nano /etc/postgresql/9.1/main/pg_hba.conf

und machen Sie dann Änderungen.

11voto

alramdein Punkte 706

Die meisten Lösungen schlagen vor, die Datei pg_hba.conf zu bearbeiten.

Für diejenigen, die die Konfigurationsdatei nicht bearbeiten möchten, müssen Sie im Grunde nur als Benutzer postgres einloggen. Wenn Sie einen Linux-Server verwenden, verwenden Sie diesen Befehl

sudo -i -u postgres

Es wird den Benutzer postgres erstellen und sich dann einloggen. Versuchen Sie jetzt Ihren psql-Befehl erneut.

Sie können dem Benutzer postgres auch ein Passwort hinzufügen mit dem Befehl: (Sie sollten im Root-Benutzer sein)

passwd postgres

Dies funktioniert, weil gemäß dieser Dokumentation von PostgreSQL,

Peer-Authentifizierung

Die Peer-Authentifizierungsmethode funktioniert, indem der Benutzername des Betriebssystems des Clients aus dem Kernel abgerufen und als erlaubter Datenbankbenutzername verwendet wird (mit optionaler Benutzernamenszuordnung). Diese Methode wird nur bei lokalen Verbindungen unterstützt.

7voto

sibosop Punkte 91

Die oben genannten Änderungen haben für mich funktioniert, nachdem ich herausgefunden hatte, dass ich den Postgres-Server nach ihrer Durchführung neu starten musste. Für Ubuntu:

sudo /etc/init.d/postgresql restart

6voto

Die Änderung von METHOD peer auf trust in der Datei pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | Zeile 85) löst das Problem. Wenn md5 ein Passwort anfordert, sollte stattdessen trust anstelle von md5 verwendet werden, um die Verwendung von Passwörtern zu vermeiden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X