Postgresql: échec de l'authentification par mot de passe pour l'utilisateur "postgres"
j'ai installé PostgreSQL 8.4, Postgres client et Pgadmin 3. Échec de l'authentification de l'utilisateur "postgres" pour le client console et Pgadmin. J'ai tapé utilisateur comme "postgres" et mot de passe "postgres", parce que cela a fonctionné avant. Mais maintenant l'authentification est un échec. Je l'ai fait quelques fois sans ce problème. Que dois-je faire? Et ce qui se passe?
psql -U postgres -h localhost -W
Password for user postgres:
psql: FATAL: password authentication failed for user "postgres"
FATAL: password authentication failed for user "postgres"
12 réponses
si je me souviens bien, l'utilisateur postgres
n'a pas de DB mot de passe défini sur Ubuntu par défaut. Cela signifie que vous pouvez vous connecter à ce compte uniquement en utilisant le compte postgres
OS user .
en supposant que vous avez root
accès sur la boîte que vous pouvez faire:
sudo -u postgres psql
si cela échoue avec une erreur database "postgres" does not exists
, alors vous n'êtes probablement pas sur une Ubuntu ou Debian serveur: -) dans ce cas, il suffit d'ajouter template1
à la commande:
sudo -u postgres psql template1
si l'une de ces commandes échoue avec une erreur psql: FATAL: password authentication failed for user "postgres"
alors vérifiez le fichier /etc/postgresql/8.4/main/pg_hba.conf
: il doit y avoir une ligne comme celle-ci que la première ligne de non-commentaire:
local all postgres ident
Pour les nouvelles versions de PostgreSQL ident
effectivement peut-être peer
. C'est OK aussi.
à L'intérieur du psql
shell vous pouvez donner le Utilisateur DB postgres
un mot de passe:
ALTER USER postgres PASSWORD 'newPassword';
vous pouvez quitter le shell psql
en tapant Ctrl D ou avec la commande \q
.
Maintenant, vous devriez être en mesure de donner à pgAdmin un mot de passe valide pour le super-utilisateur DB et il sera heureux aussi. :- )
la réponse du personnel est correcte, mais si vous voulez automatiser plus peut faire:
$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
fait! Vous avez enregistré User = postgres et password = postgres.
Si vous n'avez pas de mot de passe pour l'Utilisateur postgres ubuntu:
$ sudo passwd postgres
c'était frustrant, la plupart des réponses ci-dessus sont correctes, mais ils omettent de mentionner que vous devez redémarrer le service de base de données avant les changements dans le pg_hba.fichier conf prennent effet.
donc si vous faites quelque chose comme ce qui précède
local all postgresident
puis redémarrer comme root ( sur centos c'est quelque chose comme service postgresql-9.2 redémarrer ) maintenant, vous devriez être en mesure d'accéder à la db comme l'utilisateur postgres
$ psql psql (9.2.4) Tapez "help" pour obtenir de l'aide.
postgres=#
Espère que cela ajoute de l'info pour les nouveaux utilisateurs postgres
éditer le pg_hba.fichier conf, p.ex. avec sudo emacs /etc/postgresql/9.3/main/pg_hba.conf
remplacer toutes les méthodes d'authentification par trust
. Changer le mot de passe Unix pour l'utilisateur" postgres". Redémarrer Le Serveur. Connectez-vous avec psql -h localhost -U postgres
et utilisez le mot de passe Unix juste défini. Si cela fonctionne, vous pouvez réinitialiser pg_hba.fichier conf pour les valeurs par défaut.
si vous essayez de connecter Postgres shell en tant qu'utilisateur postgres, alors vous pouvez utiliser les commandes suivantes.
basculer vers l'utilisateur postgres
# su - postgres
se connecter à psql
# psql
L'espoir qui aide
essayez de ne pas utiliser le paramètre-W et laissez le mot de passe en blanc. Parfois, l'utilisateur est créé sans mot de passe.
si ça ne marche pas, réinitialisez le mot de passe. Il y a plusieurs façons de le faire, mais cela fonctionne sur de nombreux systèmes:
$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';
en règle générale: vous ne devez jamais définir un mot de passe pour L'utilisateur POSTGRES .
si vous avez besoin d'un accès super-utilisateur de pgAdmin, faites un autre super-utilisateur. De cette façon, si les informations d'identification de ce superutilisateur sont compromises, vous pouvez toujours SSH dans la base de données hôte réelle et supprimer manuellement le superutilisateur en utilisant
sudo -u postgres -c "DROP ROLE superuser;"
je voulais juste ajouter que vous devriez également vérifier si votre mot de passe est expiré.
Voir Postgres mot de passe de l'authentification échoue pour plus de détails.
voici quelques combinaisons que j'ai essayé de connecter:
# login via user foo
psql -Ufoo -h localhost
sudo -u postgres psql postgres
# user foo login to postgres db
psql -Ufoo -h localhost -d postgres
j'ai eu un problème similaire. Ubuntu m'a laissé me connecter dans la console avec n'importe quel mot de passe pour superuser. Sauf quand je me suis connecté avec-H localhost dans la commande psql line.
j'ai également observé que" localhost:8080/MyJSPSiteLogIn "- a montré: Fatal: une erreur d'autentication avec l'utilisateur"utilisateur".
pg_hba.conf était ok.
j'ai remarqué que deux versions de postgres fonctionnaient dans le même service.
résolu - désinstallation inutil de version.
pour ceux qui l'utilisent pour la première fois et n'ont aucune information sur ce qu'est le mot de passe, ils peuvent suivre les étapes ci-dessous(en supposant que vous êtes sur ubuntu):
-
ouvrir le fichier pg_hba.conf dans
/etc/postgresql/9.x/main
sudo vi pg_hba.conf
2.modifier la ligne ci-dessous
local all postgres peer
à
local all postgres trust
-
redémarrer le serveur
sudo service postgresql restart
-
enfin vous pouvez vous connecter sans avoir besoin d'un mot de passe comme le montre la figure
j'espère que cela vous aidera à court de temps. Vous pouvez changer le mot de passe de Postgres sql en utilisant la commande bellow.
commande
sudo-u postgres psql
et ensuite vous pouvez mettre à jour le mot de passe
commande
Alter user postgres password "YOUR_NEW_PASSWORD";