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?
(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:
pg_hba.conf
, généralement dans C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
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
)
ALTER USER postgres PASSWORD 'postgres'
pg_hba.conf
ou changez-leVoir: 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.
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 .
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