web-dev-qa-db-fra.com

psql: FATAL: l'authentification par mot de passe a échoué pour l'utilisateur Windows 8

J'ai installé postgresql sur Windows et pendant l'installation, il demande de créer un utilisateur pour le compte.Cela a fait un nouvel utilisateur Windows sur mon ordinateur appelé postgres, j'ai également créé un mot de passe pour celui-ci.

Maintenant, je veux exécuter psql sur la ligne de commande Windows, il demande un mot de passe (sans mentionner l'utilisateur) et me renvoie toujours l'erreur: psql: FATAL: password authentication failed for user "Ash". Même si j'ai mis plusieurs fois le mot de passe de mon compte.

en utilisant pgadmin j'ai changé l'utilisateur "postgres" en "Ash" mais je n'ai pas encore refait le mot de passe. J'ai suivi les étapes ici: J'ai oublié le mot de passe que j'ai entré lors de l'installation de postgres (Je tape plutôt Host all 127.0.0.1/32 trust parce que je suis sous Windows), mais lorsque je lance à nouveau psql pour pouvoir changer le mot de passe, j'obtiens l'erreur: psql FATAL:could not load pg_hba.conf. Tous ensemble.

Pourquoi ne peut-il pas se charger? Tout ce que j'ai fait, c'est ajouter une option d'authentification supplémentaire.

De plus, l'utilisateur Windows est-il séparé d'un utilisateur postresql ou sont-ils les mêmes (dépendent les uns des autres)?

Éditer:

Comme vous pouvez le voir, cela ne m'a pas donné la possibilité de choisir si Aisha devrait être un super-utilisateur ou non. ou les autres options d'ailleurs.

J'ai aussi utilisé pgadmin ||| pour créer un nouvel utilisateur mais la même erreur apparaît: enter image description hereenter image description here

L'utilisateur n'existe pas alors pourquoi fait-il cela?

12
Sarah cartenz

createuser est un utilitaire de ligne de commande. Utilisation CREATE USER username WITH PASSWORD 'fred'; ou similaire au niveau SQL dans psql. Notez le point-virgule.

Ce que vous faites dans votre capture d'écran commence à écrire une commande SQL commençant par createuser, mais ne l'envoie jamais au serveur pour s'exécuter car il n'y a pas de point-virgule. Donc, vous n'obtenez jamais l'erreur qui vous dirait que cela n'a pas de sens de le faire.

11
Craig Ringer

L'utilisateur sur votre machine n'a rien à voir avec l'utilisateur sur PostgreSQL. Le programme d'installation crée simplement un compte et un rôle PostgreSQL avec le même nom et le même mot de passe (ce qui, à mon avis, est une mauvaise idée), mais ils ne sont en aucun cas liés. L'utilisateur Windows est utilisé pour exécuter le serveur, le rôle PostgreSQL est utilisé dans la base de données.

Vous devez donc d'abord accéder au serveur avec les postgres utilisateur, puis créer un utilisateur pour vous-même. Ne changez pas le nom d'utilisateur à l'intérieur du serveur ou l'utilisateur en cours d'exécution du serveur! Créez simplement un nouveau nom d'utilisateur et accordez-lui les autorisations dont vous avez besoin.

Vous pouvez utiliser psql -U postgres pour se connecter au serveur et il vous demandera le mot de passe.

Vérifiez les autorisations pour pg_hba.conf, l'utilisateur postgres doit avoir des autorisations pour cela. Si vous ne l'avez édité qu'en tant qu'administrateur, cela devrait être correct, mais si vous avez pris des autorisations ou quoi que ce soit d'autre, cela risque de gâcher.

14
Sami Kuhmonen

J'ai eu exactement le même problème et cette ligne l'a résolu;

createuser --createdb -U postgres --login -P 'your_new_user'

@ sami-kuhmonen avait raison, mais son approche pour résoudre le problème n'a pas fonctionné pour moi.

1
Aladdin DJOUAMA