51 votes

Message d'erreur Postgres : FATAL : l'authentification Ident a échoué pour l'utilisateur "..."

Imaginez que vous voyez ce message :

FATAL : L'authentification par ident a échoué pour l'utilisateur "..."

Quelles sont les causes de ce message d'erreur ?

67voto

Steve Bennett Points 5299

Cela signifie que Postgres essaie d'authentifier un utilisateur en utilisant le protocole Ident, et qu'il ne peut pas le faire. L'authentification ident associe automatiquement les noms d'utilisateurs Unix avec les noms d'utilisateurs Postgres. Cela fonctionne comme suit:

  • Vous avez le rôle de base de données 'foo' sur la base de données 'db'
  • Votre fichier pg_hba.conf (dans /etc/postgres-something/main) définit 'Ident' comme protocole de connexion à la base de données db pour les utilisateurs se connectant depuis certains hôtes
  • Le nom d'utilisateur Unix établissant la connexion est 'foo'
  • Un serveur Ident en cours d'exécution sur la machine à partir de laquelle l'utilisateur se connecte confirme que leur nom d'utilisateur est vraiment 'foo'

Causes possibles et solutions:

  1. Il n'y a pas de serveur Ident en cours d'exécution sur la machine à partir de laquelle vous essayez de vous connecter. Testez ceci en essayant de vous connecter sur le port 113. Si cela échoue, installez un serveur Ident (par exemple, sudo apt-get install oidentd).

  2. Il y a un serveur Ident, mais il n'y a pas de rôle de base de données correspondant au nom avec lequel vous essayez de vous connecter ('foo' dans l'exemple ci-dessus). Créez-le en vous connectant de quelque manière que ce soit à la base de données avec des droits superutilisateur et exécutez CREATE ROLE foo. Ajoutez éventuellement une entrée à /etc/postgresql/.../main/pg_ident.conf (ou /var/lib/pgsql/12/data ou ailleurs).

  3. Peut-être que le nom d'utilisateur de shell ne correspond pas au rôle de la base de données. Vous pouvez tester ceci en vous connectant au serveur Ident pendant qu'une connexion est en cours, et en passant les bons numéros de port.

  4. Peut-être que vous voulez réellement vous connecter avec un mot de passe, pas avec Ident. Modifiez le fichier pg_hba.conf en conséquence. Par exemple, changez:

    host all all 127.0.0.1/32 ident

à

    host all all 127.0.0.1/32 md5

Assurez-vous de redémarrer Postgres après avoir mis à jour le fichier pg_hba.conf. Vous le faites en lançant la commande suivante:

    sudo service postgresql-12 restart

10voto

akshay Points 1

Je ne suis pas sûr des causes, mais cela a fonctionné pour moi :

dans pg_hba.conf

changer ceci :

host all all 127.0.0.1/32 md5

Erreur exacte : Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"

5voto

KulJeet Points 11

Pour Centos 7, Changez pg_hba.conf comme suit :

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" est pour les connexions de sockets de domaine Unix uniquement
local   all             all                                     peer
# Connexions locales IPv4 :
#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            md5
# Connexions locales IPv6 :
#host    all             all             ::1/128                 ident
host    all             all             ::1/128                 md5
# Autoriser les connexions de réplication depuis localhost, par un utilisateur avec le privilège de réplication.
#local   replication     all                                     peer
#host    replication     all             127.0.0.1/32            ident
#host    replication     all             ::1/128                 ident

4voto

Sous CentOS, ajoutez la ligne suivante dans /var/lib/pgsql/9.3/data/pg_hba.conf:

host all all 127.0.0.1/32 trust

Et commentez les autres entrées.

Bien sûr, ce paramètre n'est pas sécurisé, mais si vous êtes simplement en train de jouer sur une machine virtuelle de développement comme moi, alors c'est probablement bon...

2voto

despotbg Points 111

Essayez d'utiliser -h 127.0.0.1 au lieu de -h localhost

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X