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 |
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/
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.
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.
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';