web-dev-qa-db-fra.com

Postgresql: échec de l'authentification du mot de passe 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 de la console et pour Pgadmin. J'ai tapé utilisateur comme "postgres" et le mot de passe "postgres", car cela fonctionnait auparavant. Mais maintenant, l'authentification est échouée. Je l'ai déjà fait quelques fois sans ce problème. Que devrais-je faire? Et qu'est-ce qui se passe?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"
306
I159

Si je me souviens bien, l'utilisateur postgresn'a pas de DB mot de passe défini sur Ubuntu par défaut. Cela signifie que vous pouvez vous connecter à ce compte uniquement à l'aide du compte postgrestilisateur du système d'exploitation.

En supposant que vous ayez accès à rootsur la boîte, vous pouvez faire:

Sudo -u postgres psql

Si cela échoue avec une erreur database "postgres" does not exists, 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", vérifiez le fichier /etc/postgresql/8.4/main/pg_hba.conf: Il doit y avoir une ligne comme celle-ci en tant que première ligne sans commentaire:

local   all         postgres                          ident

Pour les versions plus récentes de PostgreSQL, identpourrait en fait être peername__. C'est bien aussi.

Dans le shell psqlname__, vous pouvez attribuer un mot de passe à tilisateur de la base de donnéespostgresname__:

ALTER USER postgres PASSWORD 'newPassword';

Vous pouvez quitter le shell psqlen tapant CtrlD ou avec la commande \q.

Vous devriez maintenant pouvoir donner à pgAdmin un mot de passe valide pour le superutilisateur de la base de données et il sera ravi également. :-)

606
A.H.

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

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

Terminé! Vous avez enregistré User = postgres et password = postgres.

Si vous n'avez pas de mot de passe pour l'utilisateur postgres ubuntu do:

$ Sudo passwd postgres

118
Diego

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

donc si vous faites quelque chose comme ci-dessus 

local tout identifiant postgres

then restart en tant que root (sous Centos, quelque chose comme service service postgresql-9.2 restart).

$ psql psql (9.2.4) Tapez "aide" pour obtenir de l'aide.

postgres = # 

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

33
Miguel Pereira

Editez le fichier pg_hba.conf, par exemple. avec Sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

Modifiez toutes les méthodes d'authentification en trust. Changer le mot de passe Unix pour l'utilisateur "postgres". Redémarrez le serveur. Connectez-vous avec psql -h localhost -U postgres et utilisez le mot de passe Unix que vous venez de définir. Si cela fonctionne, vous pouvez redéfinir le fichier pg_hba.conf aux valeurs par défaut.

14
nottinhill

Si vous essayez de vous connecter à Postgres Shell 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 pourra aider

11
geekgugi

Essayez de ne pas utiliser le paramètre -W et laissez le mot de passe vide. Parfois, l'utilisateur est créé sans mot de passe.

Si cela ne fonctionne pas, réinitialisez le mot de passe. Il y a plusieurs façons de le faire, mais cela fonctionne sur de nombreux systèmes:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';
10
Francisco Puga

Pour ceux qui l'utilisent pour la première fois et n'ont aucune information sur le mot de passe, ils peuvent suivre les étapes ci-dessous (en supposant que vous êtes sur ubuntu):

  1. Ouvrez le fichier pg_hba.conf dans /etc/postgresql/9.x/main

     Sudo vi pg_hba.conf 
    

    2.edit la ligne ci-dessous 

     local   all             postgres                                peer
    

    à

     local   all             postgres                                trust
    
  2. Redémarrer le serveur

      Sudo service postgresql restart
    
  3. Enfin, vous pouvez vous connecter sans mot de passe, comme indiqué dans la figure  Finally you can login without need of a password as shown in the figure

Ref ici pour plus d'infos

8
Jose Kj

En règle générale: VOUS DEVEZ NE JAMAIS DÉFINIR DE MOT DE PASSE POUR L'UTILISATEUR DE POSTGRES .

Si vous avez besoin d'un accès superutilisateur à partir de pgAdmin, créez un autre superutilisateur. Ainsi, si les informations d’identité de ce superutilisateur sont compromises, vous pouvez toujours ssh dans l’hôte de la base de données réelle et supprimer manuellement le superutilisateur à l’aide 

Sudo -u postgres -c "DROP ROLE superuser;"
2
ardilgulez

j'avais un problème similaire . Ubuntu m'a été laissé me connecter à la console avec un mot de passe pour le superutilisateur . Sauf lorsque je me suis connecté avec -h localhost dans la commande de ligne psql.

J'ai observé aussi que "localhost: 8080/MyJSPSiteLogIn" - a montré: Fatal: erreur d'autentication avec l'utilisateur "utilisateur".

pg_hba.conf était ok.

J'ai remarqué que deux versions de postgres fonctionnaient dans le même service.

Résolu - désinstallation de la version inutil.

0
David Uvm

Je voulais juste ajouter que vous devriez également vérifier si votre mot de passe est expiré.

Voir L'authentification du mot de passe Postgres échoue pour plus de détails.

0
Jörg

Voici quelques combinaisons auxquelles j'ai essayé de me connecter:

# login via user foo
psql -Ufoo -h localhost

Sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres
0
tokhi