web-dev-qa-db-fra.com

Mot de passe Windows PostgreSQL oublié

Ce matin, j'ai essayé de connecter la base de données PostgreSQL sur mon bureau Windows 7 Professionnel.

La valeur par défaut est "postgres", mais bien sûr, j'ai oublié le mot de passe que j'ai utilisé lorsque je l'ai installé à l'origine.

J'ai googlé et trouvé un post lié à la réinitialisation de votre mot de passe. J'ai suivi les étapes, mais le résultat final est un peu différent, puis mentionné dans le post. J'ai utilisé-

Net User postgres postgres

pour réinitialiser le mot de passe de ma base de données, mais au lieu d'un message de réussite, je reçois:

"Une erreur système 5 s'est produite. L'accès est refusé."

erreur système. Comment éviter cette erreur et réinitialiser le mot de passe?

36
AKIWEB

(Remarque: peu de choses sont pertinentes pour les lecteurs utilisant PostgreSQL 9.2 ou supérieur des installateurs EDB, qui ont maintenant une installation considérablement simplifiée par défaut à l'aide du NETWORK SERVICE, mais vous pouvez toujours configurer d'autres comptes) .


J'ai utilisé Net User postgres postgres pour réinitialiser le mot de passe de ma base de données mais au lieu d'un message de réussite, je reçois "System error 5 has occurred. Access is denied."

Vous avez réinitialisé (ou tenté de réinitialiser) le mot de passe du compte de service. PostgreSQL ne s'exécutera pas en tant qu'administrateur pour des raisons de sécurité et le programme d'installation le configure généralement avec un compte utilisateur "postgres" dans PostgreSQL 9.1 et versions antérieures1. Sous Windows, vous ne pouvez pas démarrer un service en tant qu'utilisateur sans enregistrer le mot de passe de l'utilisateur dans le registre, c'est donc ce que fait le programme d'installation.

Si vous modifiez le mot de passe du compte utilisateur Windows postgres, le service PostgreSQL ne peut plus démarrer. Alors ne faites pas ça, vous devrez corriger la configuration du service pour stocker le mot de passe mis à jour.

Heureusement, je pense qu'une autre erreur vous a empêché de le faire. Il semble que vous exécutiez probablement votre invite de commande sans utiliser "Exécuter en tant qu'administrateur" sur un compte d'utilisateur Windows non privilégié ou une machine avec UAC, il ne s'exécute donc pas avec les autorisations d'accès requises pour modifier le mot de passe pour postgres utilisateur.

Avant d'essayer de changer ce mot de passe, assurez-vous que c'est vraiment ce que vous voulez faire. Quel est le problème que vous essayez de résoudre ici? Essayez-vous d'installer une mise à jour de la base de données ou autre chose qui demande le mot de passe pour l'utilisateur postgres Windows?

Vous essayez probablement de vous connecter à la base de données. Pour cela, vous utilisez lui-même le mot de passe (malheureusement complètement indépendant) stocké dans la base de données. Puisque vous l'avez perdu/oublié, vous devrez le réinitialiser:

  • Trouver votre pg_hba.conf, généralement dans C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Si nécessaire, définissez les autorisations sur celui-ci afin de pouvoir le modifier; votre compte d'utilisateur pourrait ne pas être en mesure de le faire jusqu'à ce que vous utilisiez l'onglet de sécurité dans la boîte de dialogue des propriétés pour vous accorder ce droit en utilisant un remplacement administrateur. Alternativement, recherchez notepad/notepad ++ dans votre menu de démarrage, faites un clic droit, choisissez "Exécuter en tant qu'administrateur", puis utilisez Fichier-> Ouvrir pour ouvrir pg_hba.conf de cette façon.
  • Modifiez-le pour définir la ligne "Host" pour l'utilisateur "postgres" sur l'hôte "127.0.0.1/32" sur "trust". Vous pouvez ajouter la ligne si elle n'est pas là; insérez simplement:

    Host all postgres 127.0.0.1/32 trust
    Host all postgres ::1/128      trust # if IPv6 is in use
    

    avant toutes les autres lignes. (Vous pouvez ignorer les commentaires, les lignes commençant par #).

  • Redémarrez le service PostgreSQL depuis le panneau de configuration Services (démarrer-> exécuter -> services.msc)

  • se connecter en utilisant psql ou PgAdmin-III ou tout ce que vous préférez
  • ALTER USER postgres PASSWORD 'postgres'
  • supprimez la ligne que vous avez ajoutée à pg_hba.conf ou changez-le
  • redémarrez PostgreSQL à nouveau.

Voir: Comment réinitialiser le mot de passe postgres pour PostgreSQL sous Windows?


1.  9.2 utilise maintenant le compte NETWORKSERVICE, qui ne nécessite pas de mot de passe, donc ce problème disparaît.

39
Craig Ringer

Vous devez faire la distinction entre votre utilisateur système (Windows) appelé "postgres" et l'utilisateur de la base de données du même nom.

Trouvez votre fichier pg_hba.conf - cela contrôle l'accès au serveur PostgreSQL. Vous devrez le modifier en tant qu'utilisateur avec des droits d'administrateur. Recherchez les lignes qui mentionnent l'utilisateur "postgres" et définissez temporairement le mode sur "trust". Redémarrez postgresql et vous devriez pouvoir vous connecter sans mot de passe. Réinitialisez le mot de passe, puis restaurez le fichier à ses paramètres d'origine et redémarrez PostgreSQL.

Le manuel contient des détails sur méthodes d'authentification et le fichier pg_hba.conf .

4
Richard Huxton

Si quelqu'un d'autre rencontre ce problème, tout en utilisant pgAdmin, je vous suggère de jeter un œil à ceci: http://www.homebrewandtechnology.com/blog/graphicallychangepostgresadminpassword

0
Lenii Ale