L'authentification par mot de passe de Postgres échoue
j'ai essayé de me connecter avec l'utilisateur postgres depuis ma machine windows vers mon serveur avec Pgadmin.
mais il continue à me donner cette erreur:
psql: FATAL: password authentication failed for user "postgres"
alors j'ai essayé de me connecter à partir de la ligne de commande avec psql, ce qui m'a donné la même erreur. J'ai ensuite réinitialisé le mot de passe pour "tester" en utilisant psql, après avoir placé l'entrée locale dans pg_hba.conf à confiance. Et puis j'ai placé l'entrée de nouveau à md5, et ai essayé de se connecter avec le mot de passe "test".
dans psql j'ai utilisé ces commandes:
ALTER ROLE postgres WITH PASSWORD 'test';
ALTER ROLE postgres PASSWORD 'test';
ALTER USER postgres WITH PASSWORD 'test';
ALTER USER postgres PASSWORD 'test';
et cette commande spéciale psql
password
à chaque fois, je retournais le pg_hba.conf locales d'entrée du md5, et j'ai essayé de me connecter avec psql:
psql -U postgres
et on me demande un mot de passe. Après avoir entré 'test', psql me donne la même erreur que celle que j'ai mentionnée plus tôt.
Et bien sûr, j'ai redémarré postgresql après chaque et chaque changement au fichier pg_hba. Et j'utilise psql avec "su postgres".
donc, même si je peux changer le mot de passe de la manière habituelle, il n'est pas accepté comme mot de passe.
j'espère que quelqu'un pourra m'aider.
Quelques infos:
Postgresql 9.1 Ubuntu 12.04
Pg_hba fichier (comme demandé)
local all postgres md5
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
host all all <my-ip-address>/32 md5
quand j'ai voulu modifier le mot de passe, j'ai changé le md5 en confiance. Je tiens à mentionner que cette configuration a fonctionné sans problèmes avant.
les résultats de
sudo -u postgres psql -x -c "select * from pg_user where usename='postgres'"
Sont:
usename | postgres
usesysid | 10
usecreatedb | t
usesuper | t
usecatupd | t
userepl | t
passwd | ********
valuntil | 1970-01-01 00:00:00+01
useconfig |
3 réponses
comme indiqué dans la dernière édition, le mot de passe est valide jusqu'en 1970, ce qui signifie qu'il est actuellement invalide. Ceci explique le message d'erreur qui est le même que si le mot de passe était incorrect.
réinitialiser la validité avec:
ALTER USER postgres VALID UNTIL 'infinity';
dans une question récente, un autre utilisateur a eu le même problème avec les comptes d'utilisateur et PG-9.2:
PostgreSQL-échec de l'authentification par mot de passe après ajout de rôles de groupe
donc apparemment il y a un moyen de mettre involontairement une fausse validité de mot de passe à L'époque Unix (1er janvier 1970, la valeur minimum possible pour le type abstime
). Il est possible qu'il y ait un bug dans PG lui-même ou dans un outil client qui créerait cette situation.
EDIT : il s'avère être un bug pgadmin. Voir https://dba.stackexchange.com/questions/36137/
pg_hba.conf
entrée définir les méthodes de connexion par les adresses IP. Vous avez besoin de montrer la partie pertinente de pg_hba.conf
afin d'obtenir l'aide appropriée.
modifier la ligne:
host all all <my-ip-address>/32 md5
pour refléter les paramètres de votre réseau local. Donc, si votre adresse IP est 192.168.16.78
(Classe C) avec un masque de 255.255.255.0
, alors mettez ceci:
host all all 192.168.16.0/24 md5
assurez-vous que votre machine WINDOWS est dans ce réseau 192.168.16.0
et essayer à nouveau.
je suis tombé sur cette question, et les réponses ici n'ont pas fonctionné pour moi; Je ne pouvais pas comprendre pourquoi je ne peux pas me connecter et a obtenu l'erreur ci-dessus.
il s'avère que postgresql sauve usernames lowercase, mais lors de l'authentification il utilise à la fois upper - et lowercase.
CREATE USER myNewUser WITH PASSWORD 'passWord';
va créer un utilisateur avec le nom d'utilisateur 'mynewuser' et mot de passe 'passWord'.
cela signifie que vous devez vous authentifier avec "mynewuser", et non avec "myNewUser". Pour un débutant de pgsql comme moi, c'était confus. J'espère que cela aidera d'autres personnes qui rencontrent ce problème.