Mot de passe Windows PostgreSQL oublié


31

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 recherché sur Google et trouvé un message 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?

Réponses:


33

(Remarque: peu de choses sont pertinentes pour les lecteurs utilisant PostgreSQL 9.2 ou supérieur des installateurs EDB, qui ont maintenant une installation par défaut considérablement simplifiée à l'aide de NETWORK SERVICE, bien que vous puissiez 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 fonctionnera 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érieures 1 . 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 d'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 de l' postgresutilisateur.

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' postgresutilisateur 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:

  • Trouvez votre pg_hba.conf, généralement dansC:\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 donner 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 de pg_hba.confcette façon.
  • Modifiez-le pour définir la ligne "hôte" de l'utilisateur "postgres" sur l'hôte "127.0.0.1/32" sur "confiance". 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 toute autre ligne. (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.confou modifiez-la
  • redémarrez PostgreSQL à nouveau.

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


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


8
Vous pouvez également avoir besoin d'une entrée ip6: "hébergez tous les postgres :: 1/128 trust"
Ted Elliott

Cela m'a toujours permis d'éviter les problèmes avec postreSQL 9.6 sur ma machine de développement. Je ne
sais

@darwindave Dépend de votre installation. Si vous avez installé pour utiliser le NETWORKSERVICEcompte utilisateur, il n'y a pas de mot de passe de compte servce. Si vous avez installé pour utiliser un compte de service dédié comme postgresou un compte de domaine, cela peut vous aider.
Craig Ringer

Pouvez-vous mettre à jour cette réponse avec 9.2+ montrant également les deux méthodes pour Windows?
Evan Carroll

1
@EvanCarroll Si vous utilisez, NETWORK SERVICEil n'y a pas de mot de passe à réinitialiser. Si vous avez installé sur 9.2+ en utilisant un autre compte, les mêmes informations s'appliquent. Et il n'y a aucun changement à la partie concernant la réinitialisation du mot de passe du compte de base de données superutilisateur postgres . Il n'y a donc pas vraiment de changement nécessaire.
Craig Ringer

3

Vous devez faire la distinction entre votre utilisateur système (Windows) appelé "postgres" et l'utilisateur de 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 les méthodes d'authentification et le fichier pg_hba.conf .


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.