经过两个小时阅读文档,源代码和帮助主题后,我放弃了。我无法通过md5-string对psycopg2进行身份验证。根据{{3}}线程,我除了在pg_hba.conf
中启用md5-auth之外没有任何其他内容。
这是我目前的pg_hba.conf
:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 0.0.0.0/0 md5
我像这样使用psycopg2:
psycopg2.connect(host='localhost', port=5433, user='me', password='md5xxxx').cursor()
给出了:
psycopg2.OperationalError: FATAL: password authentication failed for user "me"
当然,给定的密码与pg_authid.rolpassword匹配。
根据pg_hba.conf
,我只能使用md5-auth登录(对吗?)。尽管如此,我的unhashed密码工作正常(并且哈希没有)并且我无法在其源代码中找到任何对psycopg2哈希的引用。
帮助?
谢谢!
答案 0 :(得分:7)
Psycopg2 is a wrapper around libpq,即Postgres客户端库,它已经实现了这一点。无需哈希密码。在通过电线发送之前,它将被哈希(通过libpq)。
值得注意的是,libpq实际上会将您的密码的MD5总和与您的用户名以及使用共享连接常量加盐的MD5总和的MD5总和一起发送(请参阅the source here)。复制这种行为需要一些工作。