PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :FATAL - Échec de l'authentification par les pairs pour l'utilisateur (PG ::ConnectionBad)

"L'authentification par les pairs" signifie qu'il utilise un socket unix et s'attend à ce que l'utilisateur unix qui se connecte ait le même nom d'utilisateur unix que le nom d'utilisateur postgresql.

Puisque votre nom d'utilisateur unix local est funkdified et vous essayez de vous connecter en tant qu'utilisateur goodsounds sur un socket de domaine unix (local ) connexion où votre pg_hba.conf spécifie peer authentification, Pg rejette correctement votre tentative de connexion.

C'est le comportement par défaut pour de nombreuses installations lors de l'utilisation de sockets Unix.

Vous pouvez :

  • Se connecter via TCP/IP en spécifiant un nom d'hôte dans les paramètres de connexion de votre base de données ;
  • modifier pg_hba.conf utiliser md5 authentification par mot de passe au lieu de peer authentification pour les sockets unix (local type de connexion) afin que Pg accepte l'authentification par mot de passe ; ou
  • Connectez-vous avec un nom d'utilisateur PostgreSQL identique à votre nom d'utilisateur Unix et créez l'utilisateur dans PostgreSQL s'il n'existe pas encore.

Voir les docs pour pg_hba.conf et le reste du chapitre sur l'authentification client de la documentation.

Notez que les modifications apportées à pg_hba.conf ne prennent pas effet immédiatement, vous devez redémarrer ou au moins recharger PostgreSQL pour qu'il relise pg_hba.conf .

Oh, aussi, si vous avez plusieurs versions de PostgreSQL installées, vous pouvez avoir une libpq d'une version et un serveur d'une autre. Dans ce cas, assurez-vous que l'emplacement du socket unix auquel libpq se connecte par défaut est le même que les répertoires unix_socket_directories du serveur ou remplacez-le par (par exemple) host=/tmp dans votre chaîne de connexion.