J'ai une installation Windows PostgreSQL.
Selon certains articles, aucun mot de passe par défaut n'est défini pour l'utilisateur 'postgres', mais je ne peux pas me connecter en utilisant une chaîne de mot de passe vide.
Je reçois cette exception lorsque j'essaie de me connecter:
Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"
L'astuce la plus pertinente était la suivante: https://stackoverflow.com/a/25943227/1005607
Open pg_hba.conf
Change md5 -> TRUST
then restart PgAdmin.
J'ai essayé et redémarré PGAdmin mais il me demande toujours le mot de passe lorsque j'essaie de me connecter:
Le gestionnaire de tâches de Windows montre que certains processus PostgreSQL sont en cours d'exécution. Je ne peux pas les éteindre.
J'ai essayé cela et ça a échoué:
pg_ctl restart
ERROR:
pg_ctl: no database directory specified and environment variable PGDATA unset
psql.exe postgres
Password: (none)
ERROR:
psql: fe_sendauth: no password supplied
Comment réinitialiser le mot de passe par défaut de l'utilisateur 'postgres'?
Sur la base de la réponse d'AK47 et de quelques informations supplémentaires, je l'ai corrigé en procédant comme suit,
1) Arrêtez Postgres s'il est en cours d'exécution, ligne de commande ci-dessous. Besoin de lui donner le répertoire 'data'. Dans mon cas, C:\PostgreSQL\data
pg_ctl -D C:\PostgreSQL\data stop
2) Modifiez le fichier pg_hba.conf
(il est également dans le répertoire\data) comme suit:
Comme l'a écrit AK40, c suspendre toutes les références MD5 à la confiance, par ex.
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
Host all all 127.0.0.1/32 trust
# IPv6 local connections:
Host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
Host replication all 127.0.0.1/32 trust
Host replication all ::1/128 trust
3) Maintenant, lancez
psql -U postgres
4) Dans l'invite de commande PG qui apparaît, tapez,
ALTER USER Postgres WITH PASSWORD '<newpassword>';
5) Enregistrez ceci en tapant wq
enter pour quitter l'invite PG
6) Maintenant, lancez Postgres
pg_ctl -D C:\PostgreSQL\data start
7) Pourrait vouloir annuler le MD5 -> Trust
changer plus tard dans le pg_hba.conf
.
Mettez à jour votre pg_hba.conf
fichier pour autoriser les connexions locales approuvées
[root@server] vim pg_hba.conf
>> local all all trust
puis redémarrez votre serveur PostgreSQL
[user@machine] pg_ctl -D C:\PostgreSQL\data restart (Windows)
[root@server] service postgresql restart (Linux)
à ce stade, vous pouvez vous connecter à votre serveur en tant qu'utilisateur postgres en utilisant une connexion locale sans avoir besoin de saisir un mot de passe (en omettant le -h
paramètre lors de l'appel de la commande psql
utilisera une connexion locale - si vous passez -h
alors cela correspondra à la ligne Host all all 0.0.0.0/0 <method>
dans votre pg_hba.conf
fichier)
[root@server] psql -U postgres
Vous pouvez ensuite modifier le rôle d'utilisateur postgres et définir le mot de passe comme bon vous semble en utilisant la commande suivante dans le terminal psql
[psql] alter role postgres password <new_password>;
Une fois cela fait, vous pouvez redémarrer votre serveur PostgreSQL
[user@machine] pg_ctl -D C:\PostgreSQL\data restart (Windows)
[root@server] service postgresql restart (Linux)
et à ce stade, votre mot de passe doit être changé pour le nouveau mot de passe