it-swarm.com.de

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

Ich habe gerade PostgreSQL 9.4 unter Ubuntu 15.10 installiert.

  1. Ich habe einen Benutzer mit createuser -P myuser Erstellt.
  2. Ich habe eine Datenbank mit createdb -O myuser mydatabase Erstellt.
  3. Ich habe pg_hba.conf Bearbeitet und local mydatabase myuser md5 Hinzugefügt.
  4. Ich habe PostgreSQL mit Sudo service postgresql restart Neu gestartet.

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

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

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

12
Daniel

In einer Neuinstallation von vor ein paar Tagen wurde die zweite Zeile meines pg_hba.conf ist

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 die Authentifizierung peer nicht verwenden möchten, oder verschieben Sie Ihre spezifische Regel über diese.

15
dezso

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.

3
Alvaro Neto