Solution 1 :
Cela signifie que Postgres essaie d'authentifier un utilisateur en utilisant le protocole Ident et ne peut pas. L'authentification de l'identité fonctionne comme ceci :
- Vous avez le rôle de base de données 'foo' sur la base de données 'db'
- Votre
pg_hba.conf
fichier (en/etc/postgres-something/main
) définit 'Ident' comme protocole pour se connecter à la base de donnéesdb
pour les utilisateurs se connectant depuis certains hôtes - Le nom d'utilisateur Unix établissant la connexion est 'foo'
- Un serveur d'identification exécuté sur la machine à partir de laquelle l'utilisateur se connecte confirme que son nom d'utilisateur est bien "foo"
Causes possibles et solutions :
- Il n'y a pas de serveur d'identification en cours d'exécution sur la machine à partir de laquelle vous essayez de vous connecter. Testez ceci en essayant de vous y connecter sur le port 113. Si cela échoue, installez un serveur d'identification (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 donc en vous connectant d'une manière ou d'une autre à la base de données avec les droits de superutilisateur et faites
CREATE ROLE foo
. Vous pouvez également ajouter une entrée à/etc/postgresql/.../main/pg_ident.conf
(ou/var/lib/pgsql/12/data
ou n'importe où). -
Peut-être que le nom d'utilisateur du shell ne correspond pas le rôle de la base de données. Vous pourrez peut-être tester cela en vous connectant au serveur d'identification pendant qu'une connexion est en cours et en transmettant les bons numéros de port.
-
Peut-être souhaitez-vous réellement vous connecter avec un mot de passe , pas Ident. Modifiez le
pg_hba.conf
déposer convenablement. Par exemple, modifiez :host all all 127.0.0.1/32 ident
à
host all all 127.0.0.1/32 md5
Solution 2 :
Je ne suis pas sûr des causes, mais cela m'a résolu :
en pg_hba.conf
remplacer par ceci :
héberger tous tous 127.0.0.1/32 md5
Erreur exacte :Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
Solution 3 :
Sur CentOS, ajoutez la ligne suivante à /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 ne faites que déconner sur une machine virtuelle de développement comme moi, c'est probablement bien...