有什么原因pg_shadow显示密码,而日志显示未分配密码?

时间:2018-11-16 18:48:42

标签: postgresql authentication sqlalchemy passwords

我创建了一个新的postgresql 11数据库集群。我使用SQLAlchemy编写了一个简单的CRUD脚本,以测试localhost上的连接并从python获取“用户身份验证失败”输出。

我检查了pg_hba.conf文件中的新集群,它显示:

local   all             ian                        peer

已经选中pg_authidpg_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拥有的默认数据库集群。我可以使用连接字符串中的postgres用户名和密码来连接并执行CRUD操作。

任何帮助将不胜感激。我认为我需要进行某种更改,但是无法想象需要在哪里进行。仍在学习绳索。

1 个答案:

答案 0 :(得分:0)

好吧,我希望这篇文章提交这个问题后能立即为其他人节省一些挫败感,这让我难过了几个小时,我发现了这一点:

来源:link to article

  

默认情况下,创建PostgreSQL集群时,将禁用数据库超级用户的密码身份验证(“ postgres”)。向“ postgres”用户添加密码的最简单,最安全的方法是使用“ psql”连接到本地服务器(请参阅上面的步骤1和2),然后键入psql的“ \ password”元命令。系统将要求您输入密码并确认。

postgres=# \password    
Enter new password:    
Enter it again:    
postgres=#

我替换了新的集群所有者名称“ ian”并分配了密码。我运行了脚本,现在似乎一切正常。我猜这些是新程序员必须克服的小事情...感谢任何可以在此处添加我解释的人。