Я попытался сгенерировать пароль для postgres с помощью hashlib из Python.
>>> import hashlib
>>> hashlib.md5("psql123").hexdigest()
2636d1ddc54901f98d011ffe050c0eb7
Но postgresql требует префикса md5, поэтому
sudo -u postgres psql
ALTER USER postgres PASSWORD 'md52636d1ddc54901f98d011ffe050c0eb7';
Однако аутентификация завершится с ошибкой, если я использую psql123 в качестве пароля.
Если я использую passlib, я в порядке. См. http://pythonhosted.org/passlib/lib/passlib.hash.postgres_md5.html
Выполнение следующего с помощью psql123 в качестве пароля в порядке.
ALTER USER postgres PASSWORD 'md556074e7318bd4cee558faab0678a2fad';
Я не понимаю, о чем предупреждает в passlib. Можно ли использовать этот хэш для пользователя postgres? Кроме того, где в документе говорится, что username должен быть частью ввода?
Я предполагаю, что поэтому postgres не может понять результат из hashlib. Как пользователь LDAP, я могу сгенерировать пароль в оболочке. У Postgres есть встроенная команда для этого? Имеет ли это psycopg2? Похоже, что нет.