我创建了一个新的PostgreSQL11数据库集群。我使用SQLAlchemy编写了一个简单的CRUD脚本来测试本地主机上的连接,并从python获得“用户身份验证失败”的输出。
我检查了新集群的pg_hba.conf
文件,它显示:
local all ian peer
已经检查了pg_authid
和pg_shadow
,它清楚地显示了分配给数据库所有者“ian”的md5密码。此外,我还检查了新集群是否正在使用pg_lsclusters运行,并显示它在端口5433上运行。已检查连接尝试后的日志,并得到以下消息:
2018-11-16 10:00:59.712 PST [2102] ian@iandb1 DETAIL: User "ian" has no password assigned.
Connection matched pg_hba.conf line 94: "host all all ::1/128 md5"
一点背景知识:我已经将这个脚本连接到postgres拥有的默认DB集群。使用连接字符串中的postgres用户名和密码,我可以很好地连接并执行CRUD操作。
任何帮助都将不胜感激。我认为我需要做一些改变,但不能想象它需要发生在哪里。还在学习诀窍。
发布于 2018-11-17 02:58:42
好吧,我希望这篇文章能让其他人少一些挫败感,在提交了这个问题后,我发现了这个问题--这让我困惑了几个小时:
默认情况下,当您创建PostgreSQL集群时,数据库超级用户(“postgres”)的密码身份验证是禁用的。向“postgres”用户添加密码的最简单、最安全的方法是使用“psql”连接到本地服务器(参见上面的步骤#1和#2 ),然后键入psql的“\ password”元命令。系统将要求您输入密码并进行确认。
postgres=# \password
Enter new password:
Enter it again:
postgres=#
我替换了我的新集群所有者名称'ian‘并分配了一个密码。我运行了脚本,现在一切似乎都很正常。我想,这些都是新程序员必须努力克服的小问题……感谢任何人谁可以在这里补充我的解释。
https://stackoverflow.com/questions/53343737
复制相似问题