Cela signifie que Postgres essaie d'authentifier un utilisateur à l'aide du protocole Ident, et ne peut pas. Ident auth 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 le protocole de connexion à la base de données db
pour les utilisateurs se connectant à partir de certains hôtes
- Le nom d'utilisateur Unix établissant la connexion est 'foo'
- Un serveur Ident fonctionnant sur la machine à partir de laquelle l'utilisateur se connecte confirme que son nom d'utilisateur est vraiment 'foo'
Causes et solutions possibles:
- Aucun serveur Ident n'est en cours d'exécution sur la machine à partir de laquelle vous essayez de vous connecter. Testez cela en essayant de vous y connecter sur le port 113. Si cela échoue, installez un serveur Ident (par exemple,
sudo apt-get install oidentd
).
- Il existe un serveur Ident, mais aucun rôle de base de données ne correspond au nom avec lequel vous essayez de vous connecter ('foo' dans l'exemple ci-dessus). Alors créez-le 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
.
- Peut-être que le nom d'utilisateur du shell ne correspond pas au rôle de base de données. Vous pourrez peut-être 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 voulez-vous 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
/var/lib/psql/data
Je ne suis pas sûr des causes, mais cela m'a corrigé:
dans
pg_hba.conf
changer à ceci:
Erreur exacte:
Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
la source
Sur CentOS, ajoutez la ligne suivante à
/var/lib/pgsql/9.3/data/pg_hba.conf
:Et commentez les autres entrées.
Bien sûr, ce paramètre n'est pas sécurisé, mais si vous ne faites que jouer sur une machine virtuelle de développement comme moi, alors ça va probablement bien ...
la source
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 les documents 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.
la source
pg_ctl reload
partir de la console ouSELECT pg_reload_conf();
lors de l'exécution de SQL en tant qu'utilisateur privilégié.