web-dev-qa-db-fra.com

L'authentification par mot de passe Postgres échoue

J'ai essayé de me connecter avec l'utilisateur postgres de ma machine Windows à mon serveur avec Pgadmin.

Mais il continue de me donner cette erreur:

psql: FATAL:  password authentication failed for user "postgres"

Alors j'ai essayé de me connecter depuis 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" à l'aide de psql, après avoir placé l'entrée locale dans pg_hba.conf en confiance. Et puis j'ai replacé l'entrée dans md5 et j'ai essayé de me 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

A chaque fois, je renvoyais l'entrée locale pg_hba.conf à md5 et tentais de me connecter avec psql:

psql -U postgres

Et puis on me demande un mot de passe. Après avoir entré 'test', psql me donne la même erreur que celle mentionnée précédemment.

Et bien sûr, j'ai redémarré postgresql après chaque modification du fichier pg_hba. Et j'utilise psql avec 'su postgres'.

Ainsi, 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 avec ça.

Quelques infos:

Postgresql 9.1 Ubuntu 12.04

Fichier Pg_hba (à la demande)

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 top md5 en confiance. Je tiens à mentionner que cette configuration a fonctionné sans problèmes auparavant.

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
milosa

Comme indiqué dans la dernière modification, le mot de passe est valide jusqu'en 1970, ce qui signifie qu'il est actuellement invalide. Cela explique le message d'erreur qui est identique à 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 rencontré le même problème avec les comptes d’utilisateur et PG-9.2:

PostgreSQL - L'authentification du mot de passe échoue après l'ajout des rôles de groupe

Donc, apparemment, il existe un moyen de définir involontairement une validité de mot de passe bidon sur Unix Epoch (1er janvier 1970, valeur minimale possible pour le type abstime.). Il se peut que PG ou un outil client crée un problème qui pourrait créer cette situation.

[~ # ~] éditer [~ # ~] : il s’agit d’un bogue pgadmin. Voir https://dba.stackexchange.com/questions/36137/

74
Daniel Vérité

pg_hba.conf entrée définit les méthodes de connexion par adresses IP. Vous devez afficher la partie pertinente de pg_hba.conf afin d'obtenir une aide appropriée.

Changer cette 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 WINDOWS MACHINE est dans ce réseau 192.168.16.0 et essayez à nouveau.

9
Pablo Santa Cruz

Je suis tombé sur cette question et les réponses ici ne m'ont pas fonctionné; Je ne pouvais pas comprendre pourquoi je ne pouvais pas me connecter et j'ai eu l'erreur ci-dessus.

Il s'avère que postgresql enregistre les noms d'utilisateurs en minuscule, mais lors de l'authentification, il utilise les majuscules et les minuscules.

CREATE USER myNewUser WITH PASSWORD 'passWord';

créera un utilisateur avec le nom d'utilisateur 'mynewuser' et le mot de passe 'passWord'.

Cela signifie que vous devez vous authentifier avec "mynewuser" et non avec "myNewUser". Pour un novice dans pgsql comme moi, c'était déroutant. J'espère que cela aidera les autres qui rencontrent ce problème.

8
Marcovannoord

En supposant que vous ayez un accès root sur la boîte, vous pouvez faire:

Sudo -u postgres psql

Si cela échoue avec une base de données "postgres" n'existe pas ce bloc.

Sudo -u postgres psql template1

Ensuite, le fichier Sudo nano /etc/postgresql/11/main/pg_hba.conf

local   all         postgres                          ident

Pour les versions plus récentes de PostgreSQL, ident peut en réalité être pair.

Dans le shell psql, vous pouvez attribuer un mot de passe à l'utilisateur de la base de données postgres:

ALTER USER postgres PASSWORD 'newPassword';
0
tayfun Kılıç