psql:致命:用户 windows 8 的密码验证失败

Posted

技术标签:

【中文标题】psql:致命:用户 windows 8 的密码验证失败【英文标题】:psql: FATAL: password authentication failed for user windows 8 【发布时间】:2015-09-10 18:39:45 【问题描述】:

我在 windows 上安装了 postgresql,安装时它要求为该帐户创建一个用户。这在我的计算机中创建了一个名为 postgres 的新 windows 用户,我也为它创建了一个密码。

现在我想在 windows 命令行上运行 psql,它要求输入密码(没有提及用户)并且总是给我返回错误:psql: FATAL: password authentication failed for user "Ash". 即使我已经多次输入我的帐户密码。

使用 pgadmin 我将用户“postgres”更改为“Ash”,但我还没有重新设置密码。我按照这里的步骤操作:I forgot the password I entered during postgres installation(我宁愿键入 host all 127.0.0.1/32 trust,因为我在 Windows 上),但是当我再次运行 psql 以便我可以更改密码时,我收到错误:psql FATAL:could not load pg_hba.conf. All together。

为什么加载不出来?我所做的只是添加一个额外的身份验证选项。

另外,windows用户和postresql用户是分开的还是一样的(相互依赖)?

编辑:

如您所见,它没有让我选择 Aisha 是否应该是超级用户。或与此相关的其他选项。

我也用过pgadmin|||创建新用户但弹出相同的错误:

用户不存在,为什么要这样做?

【问题讨论】:

pg_hba.conf 中提到的条目中缺少 USER 字段。 host all all 127.0.0.1/32 trust 代表“所有数据库,所有用户” 原来有一个 PostgreSQL 错误。 ***.com/questions/14564644/… 【参考方案1】:

您机器上的用户与 PostgreSQL 上的用户无关。安装程序只是创建一个具有相同名称和密码的帐户和一个 PostgreSQL 角色(在我看来这是个坏主意),但它们没有任何关系。 Windows 用户用于运行服务器,PostgreSQL 角色用于数据库内部。

所以你应该首先使用用户 postgres 访问服务器,然后为自己创建一个用户。不要更改服务器内部的用户名,或者服务器的运行用户!只需创建一个新用户名并授予它您需要的权限。

您可以使用psql -U postgres 连接到服务器,它会要求输入密码。

检查 pg_hba.conf 的权限,postgres 用户必须拥有它的权限。如果您只是以管理员身份编辑它,应该没问题,但如果您获得了权限或其他任何东西,它可能会搞砸。

【讨论】:

你好@SamiKuhmonen,我使用 psql -U postgres 登录,但它没有要求我输入密码,尽管所有方法都是 md5 并且 postgres 用户实际上确实有密码。我编辑了我的问题,让你看看发生了什么。【参考方案2】:

createuser 是一个命令行实用程序。在psql 的 SQL 级别使用 CREATE USER username WITH PASSWORD 'fred'; 或类似名称。注意分号。

您在屏幕截图中所做的是开始编写以createuser 开头的 SQL 命令,但从未将其发送到服务器运行,因为没有分号终止符。因此,您永远不会收到会告诉您这样做没有意义的错误。

【讨论】:

【参考方案3】:

我遇到了完全相同的问题,这条线解决了它;

createuser --createdb -U postgres --login -P 'your_new_user'

@sami-kuhmonen 是对的,但他解决问题的方法对我不起作用。

【讨论】:

【参考方案4】:

如果存储密码的加密与 postgresql.conf 和 pg_hba.conf 中定义的连接加密不匹配,也会发生这种情况

例如,如果 postgresql.conf 有:

password_encryption = md5

但是 pg_hba.conf 有:

host   all             all             10.0.0.110/24           scram-sha-256

那么10.0.0.110接口上的所有连接都会出现'FATAL: password authentication failed error'。

请记住,如果您更改其中任何一个文件,您将需要重新启动 postgresql,如果您更改 postgresql.conf 中的密码加密,您将需要更改所有用户的密码。

希望这可以帮助其他人解决这个问题。

【讨论】:

以上是关于psql:致命:用户 windows 8 的密码验证失败的主要内容,如果未能解决你的问题,请参考以下文章

psql:致命:用户的 PAM 身份验证失败

psql:致命:数据库“<用户>”不存在

psql: 致命错误: 用户 "ASUS" Password 认证失败

psql: 致命错误: 对用户"user1"的对等认证失败

如何解决这个问题以使用 psql? | psql:错误:致命:角色“postgres”不存在

psql:致命:角色“postgres”不存在