我在 Ubuntu 上安装了 Postgres。
通过 pgAdmin 我可以将 Postgres 与我创建的用户连接起来,但是当我尝试使用相同用户名和密码的其他应用程序时,我得到:用户身份验证失败。
为什么我可以通过 pgAdmin 连接,但通过 python 客户端却收到上述错误消息?
谢谢!
答案1
ident
通过检查哪个系统用户正在尝试连接,并以此为标准允许其连接。也可以将网络添加为标准。
以下是解决问题的几个指导要点:
- 您是否 100% 确定启动连接的部分是在您想要验证的用户上下文中运行的?
- python 客户端是否提供相同的用户名?
- 它是否以不同的用户身份运行(例如通过 sudo)?
- 您是否在同一台主机上运行 pgAdmin 和 python 客户端,所以我们可以排除其他差异因素?
- python 客户端是否连接到与 pgAdmin 相同的地址(外部地址与本地主机地址)?
配置 Postgresql 使用基于 md5/sha1 的远程身份验证可能是可靠地解决此问题的最简单方法。如果其他用户知道密码,它将允许他们进行身份验证 - 但无论如何,您应该控制谁知道密码。
答案2
检查您是否对 phpPgAdmin 和其他方法使用了相同的“主机名”。
如果您使用 localhost 或 127.0.0.1 或公共/内部服务器 IP 作为连接主机名,则会有所不同。