web-dev-qa-db-fra.com

PGBouncer Obtenir une authentification à l'échec lors de la tentative de connexion avec PSQL

J'essaie de configurer le dernier pgbouncer à travailler avec Postgres 9. Je peux me connecter à mon DB à l'aide de psql avec le bon mot de passe, mais quand j'utilise psql -p 6432 Je ne peux pas me connecter avec le message d'erreur de psql: ERROR: auth failed

Cela semble que cela pourrait être causé par mon fichier userlist.txt, mais je ne suis pas sûr de cela. J'ai vérifié et tous les fichiers requis appartiennent pleinement par l'utilisateur du système Postgres

pgbouncer.ini

[databases]
postgres = Host=localhost port=5433 auth_user=postgres dbname=postgres

[pgbouncer]
pidfile = /usr/local/pgbouncer-1.9.0/pgbouncer.pid
logfile = /usr/local/pgbouncer-1.9.0/log/pgbouncer.log

user = postgres

listen_addr = *
listen_port = 6432

auth_type = md5
auth_file = /usr/local/pgbouncer-1.9.0/etc/userlist.txt

Userlist.txt

"postgres" "md5<MD5 SUM>"

Commande utilisée pour commencer pgbouncer

./bin/pgbouncer -d etc/pgbouncer.ini

Sortie de journal montrant l'échec

2019-08-20 13:46:01.080 16446 LOG C-0x1028ce0: postgres/[email protected]:43286 login attempt: db=postgres user=postgres tls=no
2019-08-20 13:46:01.080 16446 LOG C-0x1028ce0: postgres/[email protected]:43286 closing because: client unexpected eof (age=0)
2019-08-20 13:46:06.980 16446 LOG C-0x1028ce0: postgres/[email protected]:43414 login attempt: db=postgres user=postgres tls=no
2019-08-20 13:46:06.980 16446 LOG C-0x1028ce0: postgres/[email protected]:43414 closing because: auth failed (age=0)
2019-08-20 13:46:06.980 16446 WARNING C-0x1028ce0: postgres/[email protected]:43414 pooler error: auth failed
1
Josh Kirby

Pour créer un mot de passe MD5 pour PGBouncer (ou PostgreSQL pour cette affaire), la formule est la suivante:

"md5" + md5(password + username)

Voici 3 façons que vous pouvez en créer un, où le nom d'utilisateur est "admin" et le mot de passe est "mot de passe123" ...

Linux:

# echo -n "md5"; echo -n "password123admin" | md5sum | awk '{print $1}'
md53f84a3c26198d9b94054ca7a3839366d

MacOS:

➜ echo -n "md5"; md5 -qs "password123admin"                                                                                                                                                                                   
md53f84a3c26198d9b94054ca7a3839366d

Python 2:

>>> import hashlib
>>> print("md5" + hashlib.md5("password123" + "admin").hexdigest())
md53f84a3c26198d9b94054ca7a3839366d

Python 3:

Comme ci-dessus, mais utilisez des cordes binaires ...

print("md5" + hashlib.md5(b"password123" + b"admin").hexdigest())

Fichiers de configuration

L'entrée dans votre pgbouncer.ini devrait être:

auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt

et l'entrée pertinente dans /etc/pgbouncer/userlist.txt devrait être:

"admin" "md53f84a3c26198d9b94054ca7a3839366d"

Vous pouvez ensuite tester cela en vous connectant à pgbouncer

psql -h localhost -p 6432 -U admin

... puis en tapant la version en plainte de votre mot de passe lorsque vous y êtes invité.

2
RCross

Géré pour résoudre le problème, j'utilisais une somme MD5 de mon mot de passe Postgres dans la liste des utilisateurs. Je l'ai fait parce que je l'ai vu dans 3 guides différents, mais en regardant les documents officiels, j'ai vu que vous avez besoin de mettre votre mot de passe en texte brut tout en ayant le type d'authentification toujours MD5. Cela a du sens maintenant, mais pourquoi 3 guides différents sur différents sites ont tous donné de mauvaises informations que je ne suis pas sûre. Je suis résolu si heureux à ce sujet.

0
Josh Kirby