(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' 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' postgres
utilisateur 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.conf
cette 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.conf
ou 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 NETWORKSERVICE
compte, qui ne nécessite pas de mot de passe, donc ce problème disparaît .
NETWORKSERVICE
compte 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é commepostgres
ou un compte de domaine, cela peut vous aider.NETWORK SERVICE
il 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.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 .
la source
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
la source