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?

3voto

Bill Punkte 89

Viele der anderen Antworten beziehen sich auf Einstellungen in den verschiedenen Konfigurationsdateien, und diejenigen, die sich auf die pg_hba.conf beziehen, sind anwendbar und zu 100% korrekt. Stellen Sie jedoch sicher, dass Sie die richtigen Konfigurationsdateien bearbeiten.

Wie bereits von anderen erwähnt, können die Konfigurationsdateistandorte mit verschiedenen Einstellungen innerhalb der Hauptkonfigurationsdatei überschrieben werden, sowie das Bereitstellen eines Pfads zur Hauptkonfigurationsdatei über die Befehlszeile mit der -D Option.

Sie können den folgenden Befehl verwenden, wenn Sie sich in einer psql-Sitzung befinden, um anzuzeigen, wo Ihre Konfigurationsdateien gelesen werden (vorausgesetzt, Sie können psql starten). Dies ist nur ein Fehlerbehebungsschritt, der einigen Leuten helfen kann:

select * from pg_settings where setting~'pgsql';

Stellen Sie auch sicher, dass das Home-Verzeichnis für Ihren Postgres-Benutzer dort ist, wo Sie es erwarten. Ich sage das, weil es recht einfach ist, darauf zu verzichten, da Ihr Prompt '~' anstelle des tatsächlichen Pfads Ihres Home-Verzeichnisses anzeigt, was nicht so offensichtlich ist. Viele Installationen setzen das Home-Verzeichnis des Postgres-Benutzers standardmäßig auf /var/lib/pgsql.

Wenn es nicht das ist, was es sein soll, stoppen Sie den PostgreSQL-Dienst und verwenden Sie den folgenden Befehl, während Sie als Root angemeldet sind. Stellen Sie auch sicher, dass der Postgres-Benutzer nicht in einer anderen Sitzung angemeldet ist:

usermod -d /pfad/pgsql postgres

Stellen Sie abschließend sicher, dass Ihre PGDATA-Variable korrekt gesetzt ist, indem Sie echo $PGDATA eingeben, was etwas Ähnliches wie folgt ausgeben sollte:

/pfad/pgsql/data

Wenn es nicht gesetzt ist oder etwas anderes als erwartet anzeigt, überprüfen Sie Ihre Start- oder RC-Dateien wie .profile oder .bash.rc - dies wird stark je nach Ihrem Betriebssystem und Ihrer Shell variieren. Sobald Sie das korrekte Startskript für Ihre Maschine ermittelt haben, können Sie das folgende einfügen:

export PGDATA=/pfad/pgsql/data

Für mein System habe ich dies in /etc/profile.d/profile.local.sh platziert, damit es für alle Benutzer zugänglich ist.

Jetzt sollten Sie in der Lage sein, die Datenbank wie gewohnt zu initialisieren, und alle Ihre psql-Pfad-Einstellungen sollten korrekt sein!

3voto

Mani Punkte 2306

Wenn Sie dieses Problem mit Rails haben und wissen, dass Sie diesen Benutzernamen mit Passwort bereits erstellt haben und die richtigen Rechte haben, müssen Sie einfach folgendes am Ende Ihrer database.yml-Datei hinzufügen.

host: localhost

Die Gesamtdatei wird wie folgt aussehen

development:
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: root
  password: admin
  host: localhost

Sie müssen Ihre pg_hba.conf-Datei überhaupt nicht anfassen. Viel Spaß beim Codieren

3voto

Shubham Jain Punkte 886

Dieser Fehler hat mich in die Irre geführt. Ich führe pg in Docker mit gemounteten Ports aus. Das Hinzufügen von -h -p zum psql-Befehl hat das Problem gelöst.

psql -U -d -W -h -p

2voto

Epsilon47 Punkte 768

Mein Problem war, dass ich keinen Server eingegeben habe. Ich dachte, dass es standardmäßig eingestellt ist, wegen des Platzhalters, aber als ich localhost eingegeben habe, hat es funktioniert.

2voto

Marshall Punkte 88

Wenn Sie versuchen, diese Datei in Cloud 9 zu finden, können Sie Folgendes tun:

sudo vim /var/lib/pgsql9/data/pg_hba.conf

Drücken Sie I, um zu bearbeiten/einzufügen, drücken Sie ESC 3 Mal und geben Sie :wq ein, um die Datei zu speichern und zu beenden.

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