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   |
50
demandé sur Braiam 2013-01-28 18:52:43

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/

74
répondu Daniel Vérité 2017-05-23 11:46:45

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.

9
répondu Pablo Santa Cruz 2013-01-28 15:10:18

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.

7
répondu Marcovannoord 2016-12-29 08:59:04