L'authentification par mot de passe Postgres échoue

36

J'ai installé PostgreSQL 9.1 et pgadmin3 sur Ubuntu Server 13.10.

J'ai configuré postgresql.conf avec: listen_addresses = '*'

J'ai également configuré ph_hba.conf en changeant de connexion entre homologues md5

De plus, je réinitialise le mot de passe de postgres par: sudo password postgres

puis redémarré le service avec sudo /etc/init.d/postgresql restart

Après cela, j'ai essayé de me connecter à la base de données de modèles par défaut PostgreSQL:

sudo -u postgres psql template1

mais la connexion a échoué avec ce message d'erreur:

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

puis j'ai essayé de me connecter depuis pgadmin, ce qui m'a donné la même erreur.

J'ai lu ici qu'il pourrait s'agir d'un bogue de date d'expiration du mot de passe. Un utilisateur de PostgreSQL ne peut pas se connecter au serveur après avoir changé le mot de passe.

mais je ne pouvais pas le résoudre car je ne peux pas me connecter avec psql. Est-ce que quelqu'un maintenant comment résoudre ce problème?

MODIFIER

fichier ph_hba:

ici

Capture d'écran:

entrez la description de l'image ici

Shadin
la source
7
Je suis assez irrité par le fait que vous ayez cloné ce post. Je viens d'écrire une réponse à cette question, seulement pour découvrir que vous avez également posé une question identique à stackoverflow.com qui comportait déjà une réponse acceptée. Ne copiez pas et ne collez pas les réponses entre les sites, vous faites perdre du temps à tout le monde et vous compliquez la tâche pour trouver des informations. Si vous insistez pour cela, établissez des liens entre eux.
Craig Ringer

Réponses:

67

Vous confondez le mot de passe pour l'utilisateur unix "postgres" avec le mot de passe de la base de données pour l'utilisateur "postgres". Ce ne sont pas les mêmes.

Vous vous êtes verrouillé, car vous avez activé l' md5authentification pour l'utilisateur de base de données postgressans définir de mot de passe pour l'utilisateur de base de données postgres.

Ajouter une nouvelle ligne en haut de pg_hba.conf:

local    postgres     postgres     peer

puis redémarrez / rechargez PostgreSQL et:

sudo -u postgres psql

A partir de l'invite résultante:

ALTER USER postgres PASSWORD 'my_postgres_password';

puis supprimez la ligne que vous avez ajoutée pg_hba.confet redémarrez Pg. Vous pouvez maintenant utiliser le mot de passe que vous avez défini ci-dessus pour vous connecter à PostgreSQL en tant postgresqu'utilisateur.

Pour en savoir plus, lisez le chapitre "Authentification du client" du manuel d'utilisation et de la documentationpg_hba.conf .

Craig Ringer
la source
1
Test d'une nouvelle pg9.6.6 sur un serveur UBUNTU 16 LTS ... Et j'ai été surpris par tous ces "problèmes de débutant". Arrivez ici avec la solution ... Faites pas à pas ... La grosse surprise: ne fonctionne pas! psql -W postgresql://postgres:postgres@localhostproduisant à nouveau la même "FATAL: échec de l'authentification du mot de passe pour l'utilisateur 'postgres'"
Peter Krauss
Solution: toutes les lignes de confiance fonctionnent ...
Peter Krauss
J'utilise ssh ... Après avoir tout remis à md5, un par un (local, local, hôte ...), seule la ligne "héberger toute la confiance 127.0.0.1/32" ne peut pas changer, elle a été conservée avec " confiance". Alors, nouvelle question: pourquoi?
Peter Krauss
le pg_hba.conffichier appartient à l'utilisateur du système postgres. Je ne connais que le mot de passe de la base de données de l'utilisateur de la base de données postgres. La question est donc de savoir comment puis-je éditer ce fichier conf sans en changer le propriétaire?
Shailen
Pouvez-vous s'il vous plaît, ce que la ligne a local postgres postgres peervraiment besoin pour pg_hba.conf? Tout fonctionne bien sans elle
MaxCore le
3

Essayez de modifier le mot de passe de la base de données template1 en utilisant ceci:

$ psql -c "ALTER USER postgres WITH PASSWORD 'yourPassword'" -d template1
pfugazza
la source
M'a donné la même erreur, mais avec l'utilisateur "root" au lieu de l'utilisateur "postgres"
Shadin
Pouvez-vous expliquer pourquoi cela peut aider?
xliiv
2

dans votre pg_hba.conf

# IPv4 local connections:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32         trust

si cela ne fonctionne pas, essayez avec

host    all         all         your_ip/32         trust

puis redémarrez votre base de données cela fonctionnera bien .. si vous faites confiance alors il n’est pas nécessaire de mot de passe si vous faites MD5 alors il vous demandera mot de passe ...

smn_onrocks
la source
3
n'utilisez cette approche nulle part, vous devriez toujours restreindre l'accès des utilisateurs à vos données
Most Wanted
sauf si vous utilisez un serveur CTF.
Pathfinder