psql: FATAL: Peer-Authentifizierung für Benutzer fehlgeschlagen


12

Ich habe gerade PostgreSQL 9.4 unter Ubuntu 15.10 installiert.

  1. Ich habe einen Benutzer mit erstellt createuser -P myuser
  2. Ich habe eine Datenbank mit erstellt createdb -O myuser mydatabase
  3. Ich habe bearbeitet pg_hba.confund hinzugefügtlocal mydatabase myuser md5
  4. Ich habe PostgreSQL mit neu gestartet sudo service postgresql restart

Benutzer myuser ist nur ein PostgresSQL-Benutzer und hat kein Benutzerkonto unter Ubuntu.

Wenn ich versuche, eine Verbindung zur Datenbank psql -W mydatabase myuserherzustellen, schlägt dies mit fehl psql: FATAL: Peer authentication failed for user "myuser".

PostgreSQL läuft…

● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2016-03-03 09:53:00 CET; 9min ago
  Process: 22219 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 22219 (code=exited, status=0/SUCCESS)

Mar 03 09:53:00 SERVER01 systemd[1]: Starting PostgreSQL RDBMS...
Mar 03 09:53:00 SERVER01 systemd[1]: Started PostgreSQL RDBMS.

... und zuhören.

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:postgresql    *:*                     LISTEN
tcp6       0      0 localhost:postgresql    [::]:*                  LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     151534   /var/run/postgresql/.s.PGSQL.5432

Was muss ich tun, um eine Verbindung mit dem Benutzer myuser zur Datenbank mydatabase herzustellen ?

Antworten:


15

In einer Neuinstallation von ein paar Tagen, die zweite Zeile meines pg_hba.confheißt

local   all             all              peer

Ich glaube, dies ist derjenige, der Ihren Verbindungsversuch zum Scheitern bringt.

Hierbei spielt die Reihenfolge der Regeln eine Rolle: Die erste, die der Zugriffsmethode, dem Benutzernamen, dem Datenbanknamen und dem Quell-IP-Bereich entspricht, wird berücksichtigt. Wenn dies fehlschlägt, gibt es keinen zweiten Versuch, sodass der Verbindungsversuch wahrscheinlich fehlschlägt. Oder wie in der Dokumentation angegeben :

Es gibt kein "Durchfallen" oder "Sichern": Wenn ein Datensatz ausgewählt wird und die Authentifizierung fehlschlägt, werden nachfolgende Datensätze nicht berücksichtigt. Wenn kein Datensatz übereinstimmt, wird der Zugriff verweigert.

Die Lösung ist einfach: Entfernen Sie entweder die obige Zeile, wenn Sie keine peerAuthentifizierung verwenden möchten, oder verschieben Sie Ihre spezifische Regel über diese.


Das Verschieben der Linie hat funktioniert.
— Daniel

Wie können wir das Passwort mit einer 'md5'-Authentifizierung speichern, damit wir es nicht immer wieder eingeben müssen ...?
— sk

3

Zuerst ... überprüfen Sie, ob Sie die Zeilen haben, die dem Benutzer myuser in pg_hba.conf erlauben. Zum Beispiel:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Oder andere Berechtigungszeilen für IPV4 (und IPv6, falls Sie diese verwenden) mit: TYPE DATABASE USER ADDRESS METHOD

Führen Sie nach dieser Überprüfung die Datei psql wie folgt aus:

psql -h localhost -U myuser mydatabase

Geben Sie dann bei der angeforderten Eingabeaufforderung das Kennwort myuser des Benutzers ein.


1
Entfernen Sie natürlich die Peer-Authentifizierung.
— Alvaro Neto

Lassen Sie eine Instanz aktualisieren, um Remoteverbindungen zuzulassen. Die Abhöradresse wird auf gesetzt '*'und die host all all 0.0.0.0/0 md5Regel hinzugefügt . Musste die Peer-Authentifizierung nicht entfernen. -h localhostIch habe gerade mit dem Parameter gearbeitet. Beste Antwort, da Sie bei einer Standardinstallation höchstwahrscheinlich nicht die Konfiguration berühren müssen.
— Mark Carpenter Jr.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.