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 ?
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 ?
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:
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ôtesCauses possibles et solutions:
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
).
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).
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.
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
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
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...
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.