555 votes

'authentification par mot de passe a échoué pour l'utilisateur "postgres"'

J'ai installé PostgreSQL 8.4, le client Postgres et Pgadmin 3. L'authentification a échoué pour l'utilisateur "postgres" à la fois pour le client console et Pgadmin. J'ai tapé l'utilisateur "postgres" et le mot de passe "postgres", car cela fonctionnait avant. Mais maintenant, l'authentification a échoué. Je l'ai fait avant plusieurs fois sans ce problème. Que devrais-je faire? Et que se passe-t-il?

psql -U postgres -h localhost -W
Mot de passe pour l'utilisateur postgres : 
psql: FATAL: l'authentification par mot de passe a échoué pour l'utilisateur "postgres"
FATAL: l'authentification par mot de passe a échoué pour l'utilisateur "postgres"

3 votes

Dans mon cas, la connexion échoue car le mot de passe est trop complexe ...

3 votes

Assurez-vous de lire jusqu'au bout de cette page. J'ai dû faire plusieurs choses pour que cela fonctionne. Tout d'abord, l'étape ALTER, puis modifier mon fichier pg_hba.conf, puis redémarrer postgres.

0 votes

944voto

A.H. Points 23369

Si je me souviens correctement, l'utilisateur postgres n'a pas de mot de passe DB défini par défaut sur Ubuntu. Cela signifie que vous ne pouvez vous connecter à ce compte qu'en utilisant le compte postgres en tant qu'utilisateur OS.

En supposant que vous avez un accès root sur la machine, vous pouvez faire :

sudo -u postgres psql

Si cela échoue avec une erreur database "postgres" does not exists, alors vous n'êtes probablement pas sur un serveur Ubuntu ou Debian :-) Dans ce cas, ajoutez simplement template1 à la commande :

sudo -u postgres psql template1

Si l'une de ces commandes échoue avec une erreur psql: FATAL: password authentication failed for user "postgres", alors vérifiez le fichier /etc/postgresql/8.4/main/pg_hba.conf : Il doit y avoir une ligne comme celle-ci en première ligne non commentée :

local   all         postgres                          ident

Pour les versions plus récentes de PostgreSQL, ident peut effectivement être peer. C'est aussi correct.

À l'intérieur de l'invite psql, vous pouvez donner à l'utilisateur DB postgres un mot de passe :

ALTER USER postgres PASSWORD 'nouveauMotDePasse';

Vous pouvez quitter l'invite psql en tapant CtrlD ou avec la commande \q.

Maintenant, vous devriez être en mesure de donner à pgAdmin un mot de passe valide pour le superutilisateur DB et il sera également heureux. :-)

0 votes

C'est mieux, merci! psql fonctionne. Mais j'ai encore des problèmes avec pgadmin3 - il me demande un mot de passe pour mon utilisateur root du système. (étrange pour moi) pg_hba.conf est exactement comme vous dites.

0 votes

Je voudrais ensuite quitter la console en tapant '\q'. Ça m'a pris un certain temps pour trouver cette astuce :)

4 votes

Notez que pg_hba.conf doit avoir l'utilisateur postgres configuré en ident pour que les premières étapes fonctionnent. Si vous l'avez déjà configuré en md5 ou autre chose, vous ne pourrez pas vous connecter automatiquement.

204voto

Diego Points 571

La réponse du personnel est correcte, mais si vous souhaitez automatiser davantage, vous pouvez faire :

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

Fait ! Vous avez enregistré l'utilisateur = postgres et le mot de passe = postgres.

Si vous n'avez pas de mot de passe pour l'utilisateur postgres sur ubuntu, faites :

$ sudo passwd postgres

4 votes

Faites attention si votre mot de passe contient des caractères intéressants comme '!'

0 votes

En tant que vous avez du mal à changer le mot de passe de l'utilisateur, une bonne pratique serait de créer un nouvel utilisateur et un nouveau mot de passe: À l'intérieur de l'invite SQL, ce serait: postgres-# CREATE ROLE votre_nom_utilisateur AVEC CONNEXION CREATEDB MOT DE PASSE ENCRYPTÉ 'votre_mot_de_passe'; Une discussion sur l'utilisation de l'utilisateur postgres peut être trouvée dans stackoverflow.com/questions/2172569/…

0 votes

La seule solution qui a fonctionné pour moi (Kali Linux 2020)

48voto

Blueraiu Points 385

C'était frustrant, la plupart des réponses ci-dessus sont correctes mais elles oublient de mentionner que vous devez redémarrer le service de la base de données avant que les modifications apportées au fichier pg_hba.conf ne prennent effet.

donc si vous apportez les modifications comme mentionné ci-dessus :

local all postgres ident

ensuite redémarrez en tant que root (sur centos, c'est quelque chose comme service service postgresql-9.2 restart) maintenant vous devriez pouvoir accéder à la base de données en tant qu'utilisateur postgres

$ psql
psql (9.2.4)
Type "help" for help.

postgres=# 

J'espère que cela ajoutera des informations pour les nouveaux utilisateurs de postgres

30 votes

Sur ubuntu, tapez : sudo service postgresql restart

5 votes

Pour RHEL7, utilisez sudo systemctl restart postgresql.service

1 votes

Qu'en est-il sur mac?

26voto

Sir Ben Benji Points 1063

Modifiez le fichier pg_hba.conf, pour Debian sur /etc/postgresql/9.3/main/pg_hba.conf et pour les dérivés Red Hat/IBM sur /var/lib/pgsql/9.4/data/pg_hba.conf

  • Changer toutes les méthodes d'authentification en trust.
  • Changer le mot de passe Linux pour l'utilisateur postgres.
  • Redémarrez le serveur.
  • Connectez-vous avec psql -h localhost -U postgres et utilisez le mot de passe Unix nouvellement défini.
  • Si cela fonctionne, vous devriez rétablir le fichier pg_hba.conf avec des valeurs utilisant les méthodes md5 ou ident et redémarrer.

3 votes

Si vous êtes complètement bloqué, c'est la seule méthode garantie. Changez toutes les méthodes en trust, redémarrez la base de données, puis en tant que root : sudo su - postgres, ensuite définissez/réparez/supprimez le mot de passe pour la base de données postgres (et dans le shell, si nécessaire), puis restaurez les méthodes md5 ou ident pour plus de sécurité et redémarrez à nouveau pour que les valeurs restent. Au fait, sur Cent/RedHat 9.4, le fichier se trouve à : /var/lib/pgsql/9.4/data/pg_hba.conf

0 votes

Merci Papak, l'emplacement du fichier sur Cent OS a été d'une grande aide.

12voto

geek gugi Points 91

Si vous essayez de vous connecter à l'invite de commandes postgres en tant qu'utilisateur postgres, vous pouvez utiliser les commandes suivantes.

passer à l'utilisateur postgres

# su - postgres

se connecter à psql

# psql

J'espère que cela vous aidera

4 votes

su - postgres demande un mot de passe sur posgresql 9.5 sur Ubuntu 16.04

3 votes

su - postgres est la commande que la documentation officielle de Fedora suggère, mais j'obtiens également une invite de mot de passe. Pour contourner cela, j'ai suivi cet e-mail du forum PostgreSQL qui utilise la même commande que la réponse acceptée ici : sudo -u postgres psql. N'oubliez pas d'initialiser et de démarrer le serveur de base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X