J'ai installé PostgreSQL 8.4, le client Postgres et Pgadmin 3. L'authentification a échoué pour l'utilisateur "postgres" à la fois pour le client de la console et pour Pgadmin. J'ai tapé utilisateur comme "postgres" et le mot de passe "postgres", car cela fonctionnait auparavant. Mais maintenant, l'authentification est échouée. Je l'ai déjà fait quelques fois sans ce problème. Que devrais-je faire? Et qu'est-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"
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 à l'aide du compte postgres
tilisateur du système d'exploitation.
En supposant que vous ayez accès à root
sur la boîte, vous pouvez faire:
Sudo -u postgres psql
Si cela échoue avec une erreur database "postgres" does not exists
, vous n'êtes probablement pas sur un serveur Ubuntu ou Debian :-) Dans ce cas, ajoutez simplement 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"
, vérifiez le fichier /etc/postgresql/8.4/main/pg_hba.conf
: Il doit y avoir une ligne comme celle-ci en tant que première ligne sans commentaire:
local all postgres ident
Pour les versions plus récentes de PostgreSQL, ident
pourrait en fait être peer
name__. C'est bien aussi.
Dans le shell psql
name__, vous pouvez attribuer un mot de passe à tilisateur de la base de donnéespostgres
name__:
ALTER USER postgres PASSWORD 'newPassword';
Vous pouvez quitter le shell psql
en tapant CtrlD ou avec la commande \q
.
Vous devriez maintenant pouvoir donner à pgAdmin un mot de passe valide pour le superutilisateur de la base de données et il sera ravi également. :-)
La réponse du personnel est correcte, mais si vous souhaitez automatiser davantage, vous pouvez:
$ Sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
Terminé! Vous avez enregistré User = postgres et password = postgres.
Si vous n'avez pas de mot de passe pour l'utilisateur postgres ubuntu do:
$ Sudo passwd postgres
C’était frustrant, la plupart des réponses ci-dessus sont correctes, mais elles ne mentionnent pas que vous devez redémarrer le service de base de données avant que les modifications apportées au fichier pg_hba.conf ne prennent effet.
donc si vous faites quelque chose comme ci-dessus
local tout identifiant postgres
then restart en tant que root (sous Centos, quelque chose comme service service postgresql-9.2 restart).
$ psql psql (9.2.4) Tapez "aide" pour obtenir de l'aide.
postgres = #
J'espère que cela ajoute des informations pour les nouveaux utilisateurs de postgres
Editez le fichier pg_hba.conf, par exemple. avec Sudo emacs /etc/postgresql/9.3/main/pg_hba.conf
Modifiez toutes les méthodes d'authentification en trust
. Changer le mot de passe Unix pour l'utilisateur "postgres". Redémarrez le serveur. Connectez-vous avec psql -h localhost -U postgres
et utilisez le mot de passe Unix que vous venez de définir. Si cela fonctionne, vous pouvez redéfinir le fichier pg_hba.conf aux valeurs par défaut.
Si vous essayez de vous connecter à Postgres Shell en tant qu'utilisateur postgres, vous pouvez utiliser les commandes suivantes.
passer à l'utilisateur postgres
# su - postgres
se connecter à psql
# psql
J'espère que cela pourra aider
Essayez de ne pas utiliser le paramètre -W et laissez le mot de passe vide. Parfois, l'utilisateur est créé sans mot de passe.
Si cela ne fonctionne 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';
Pour ceux qui l'utilisent pour la première fois et n'ont aucune information sur le mot de passe, ils peuvent suivre les étapes ci-dessous (en supposant que vous êtes sur ubuntu):
En règle générale: VOUS DEVEZ NE JAMAIS DÉFINIR DE MOT DE PASSE POUR L'UTILISATEUR DE POSTGRES .
Si vous avez besoin d'un accès superutilisateur à partir de pgAdmin, créez un autre superutilisateur. Ainsi, si les informations d’identité de ce superutilisateur sont compromises, vous pouvez toujours ssh dans l’hôte de la base de données réelle et supprimer manuellement le superutilisateur à l’aide
Sudo -u postgres -c "DROP ROLE superuser;"
j'avais un problème similaire . Ubuntu m'a été laissé me connecter à la console avec un mot de passe pour le superutilisateur . Sauf lorsque je me suis connecté avec -h localhost dans la commande de ligne psql.
J'ai observé aussi que "localhost: 8080/MyJSPSiteLogIn" - a montré: Fatal: 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 de la version inutil.
Je voulais juste ajouter que vous devriez également vérifier si votre mot de passe est expiré.
Voir L'authentification du mot de passe Postgres échoue pour plus de détails.
Voici quelques combinaisons auxquelles j'ai essayé de me 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