Supposons que vous voyez ce message:
FATAL: Ident authentication failed for user "..."
Quelles sont les causes de ce message d'erreur?
Cela signifie que Postgres essaie d'authentifier un utilisateur à l'aide du protocole Ident, et ne peut pas. Ident auth fonctionne comme ceci:
pg_hba.conf
fichier (dans /etc/postgres-something/main
) définit 'Ident' comme le protocole de connexion à la base de données db
pour les utilisateurs se connectant à partir de certains hôtesCauses et solutions possibles:
Sudo apt-get install oidentd
).Il y a un serveur Ident, mais il n'y a aucun 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 des 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 partout).
Peut-être que le nom d'utilisateur Shell ne correspond pas au rôle de base de données. Vous pouvez être en mesure de tester cela 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 Ident. Modifiez le pg_hba.conf
fichier de manière appropriée. Par exemple, changez:
Host all all 127.0.0.1/32 ident
à
Host all all 127.0.0.1/32 md5
Je ne suis pas sûr des causes, mais cela m'a corrigé:
dans pg_hba.conf
changer à 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"
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 est pas sécurisé, mais si vous ne faites que jouer sur un développement VM comme moi, alors c'est probablement bien ...
Pour Centos 7, remplacez pg_hba.conf par ci-dessous:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
#Host all all 127.0.0.1/32 ident
Host all all 127.0.0.1/32 md5
# IPv6 local connections:
#Host all all ::1/128 ident
Host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication all peer
#Host replication all 127.0.0.1/32 ident
#Host replication all ::1/128 ident
Si vous ne l'avez pas déjà essayé, consultez votre fichier pg_hba.conf. Il sera nommé quelque chose comme /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); vous devrez peut-être utiliser "find/-name pg_hba.conf" pour le localiser.
En bas du fichier, changez les valeurs de 'METHOD' en 'trust' pour les tests locaux (voir la documentation de postgres pour des informations complètes). Redémarrez la machine pour vous assurer que tout démarre correctement et que les nouveaux paramètres sont lus.
Espérons que cela guérira vos malheurs. Il a résolu mes problèmes sur Fedora 20 avec PostgreSQL 9.3.