我通过创建的 4 个角色遇到了这个问题:
使用 GUI (1) 在 pgAdmin III 中更改用户的密码后,该用户无法再登录。
pgAdmin III 显示错误信息:
An error has occurred:
Error connecting to the server: FATAL: password authentication failed for user "sam"
FATAL: password authentication failed for user "sam"
我的系统:Ubuntu 12.04 上的 Postgresql 9.2
有没有什么办法解决这一问题?
(1): 使用账户 postgres 登录,在 Login Roles 中右键单击用户,转到“定义”选项卡并输入密码
您可能被此PgAdmin 错误( changelog ) 所困扰:
已经看到此错误设置密码过期日期很久以前,例如 1970 年 1 月 1 日。在这种情况下,尝试连接时的错误消息与密码错误没有什么不同。
您可以通过以下方式检查这些到期日期:
如果它们错了,请使用以下命令重置它们:
并升级 pgAdmin。
简单的做法是使用 psql 或 pgAdmin 登录,然后
现在,如果您无法使用超级用户帐户登录,您可以通过更改该用户的 pg_hba.conf 设置并重新加载配置来恢复(有时我发现这需要重新启动服务器,但不知道为什么)。
您可以做的是添加一行,允许您使用 ident (peer in 9.2) 方法(如果您可以使用与用户同名的本地系统帐户)登录用户的本地连接,或者(如果这是不可能的)设置为“信任”(非常暂时!)。如果使用信任,请尽快回退,因为这意味着“相信用户就是他/她声称的人!” 因此,在没有立即恢复需求的情况下启用此设置是危险的。
登录后,您可以重置上面的密码。
对于 Windows 变体 - 由于 pgAdmin 为我的 Windows x64 版本 9.2 安装,我也遇到了这个讨厌的错误。它让我的生产陷入瘫痪。
在文件夹
C:\Program Files\PostgreSQL\9.2\data
orC:\Program Files (x86)\PostgreSQL\9.**x**\data
中,您会找到pg_hba.conf文本文件。找到以下几行:
并将 METHOD md5 更改为“信任”,如下所示:
从
Windows>Run
类型“services.msc”和 [enter] 中找到正确的 PostgreSQL 实例并重新启动它。您的数据库安全性现在已经完全开放!在将所有相关用户的用户密码到期时间更改为 2099 年之后,请注意将其返回到 md5 的警告。
如果您还没有尝试过,请查看您的 pg_hba.conf 文件。它将被命名为 /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20);您可能必须使用 'find / -name pg_hba.conf' 来定位它。
在文件的底部,将 'METHOD' 值更改为 'trust' 以进行本地测试(有关完整信息,请参阅 postgres 文档)。重新启动机器以确保一切正常启动并读取新参数。
希望这能治愈你的困境。它用 PostgreSQL 9.3 解决了我在 Fedora 20 上的问题。
2016 年 10 月 14 日更新:
在 Ubuntu 上,所需的文件名是
/etc/postgresql/9.5/main/pg_hba.conf
. 仅用于本地测试,将其修改为如下所示:带有 METHOD“信任”的两条线是新的。它们允许您在没有用户名/密码的情况下进行连接。
完成后,您需要通过以下方式重新启动服务器:
我只是遇到了同样的问题,结果发现我有多个同名用户(不同的情况)。一旦我合并所有权并删除了一个,至少很清楚。根据连接方法的不同,案件不一定会被转移以进行身份验证。
FATAL: password authentication failed
当您远程更改用户密码但密码验证方法与本地不同时,可能会出现这种情况。在这种情况下,解决方法是编辑
pg_hba.conf
文件并确保一致的密码验证。例如,127.0.0.1 使用scram-sha-256
和 192.168.1.2 使用md5
然后将 127.0.0.1 设置为md5
允许您再次登录(重新启动服务后)。