我尝试使用Python中的hashlib
为postgres
生成密码。
>>> 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用户,我可以在shell中生成密码。Postgres是否有内置命令来执行此操作?psycopg2
是否有这样的命令?看起来它没有。
postgres
用户账户,而不是应用程序用户账户。这种哈希方式让我想起了两种天真的 MAC 构造方式,它们会导致扩展/长度攻击。 - CppLearner