PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL:FATAL – Peer-Authentifizierung für Benutzer fehlgeschlagen (PG::ConnectionBad)

"Peer-Authentifizierung" bedeutet, dass ein Unix-Socket verwendet wird und erwartet wird, dass der verbindende Unix-Benutzer denselben Unix-Benutzernamen wie den postgresql-Benutzernamen hat.

Da Ihr lokaler Unix-Benutzername funkdified ist und Sie versuchen, sich als Benutzer goodsounds zu verbinden über einen Unix-Domain-Socket (local ) Verbindung, wo Ihre pg_hba.conf gibt peer an Authentifizierung, Pg lehnt Ihren Verbindungsversuch korrekt ab.

Dies ist das Standardverhalten für viele Installationen, wenn Unix-Sockets verwendet werden.

Sie können:

  • Stellen Sie eine Verbindung über TCP/IP her, indem Sie einen Hostnamen in Ihren Datenbankverbindungseinstellungen angeben;
  • Bearbeiten Sie pg_hba.conf um md5 zu verwenden Passwortauthentifizierung statt peer Authentifizierung für Unix-Sockets (local Verbindungstyp), sodass Pg die Kennwortauthentifizierung akzeptiert; oder
  • Verbinden Sie sich mit einem PostgreSQL-Benutzernamen, der mit Ihrem Unix-Benutzernamen identisch ist, und erstellen Sie den Benutzer in PostgreSQL, falls er noch nicht existiert.

Siehe die Dokumentation für pg_hba.conf und den Rest des Kapitels zur Client-Authentifizierung in der Dokumentation.

Beachten Sie, dass Änderungen an pg_hba.conf vorgenommen werden nicht sofort wirksam werden, müssen Sie PostgreSQL neu starten oder zumindest neu laden, damit es pg_hba.conf neu liest .

Oh, außerdem, wenn Sie mehrere PostgreSQL-Versionen installiert haben, haben Sie möglicherweise eine libpq von einer Version und einen Server von einer anderen. Stellen Sie in diesem Fall sicher, dass der Speicherort für den Unix-Socket, mit dem sich libpq standardmäßig verbindet, derselbe ist wie die unix_socket_directories des Servers oder überschreiben Sie es mit (z. B.) host=/tmp in Ihrer Verbindungszeichenfolge.