psql:FATAL:用户窗口8的密码验证失败

时间:2015-06-24 13:57:15

标签: windows postgresql authentication win64

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

现在我想在Windows命令行上运行psql,它要求输入密码(不提及用户)并且总是给我回错:psql: FATAL: password authentication failed for user "Ash".即使我已多次设置我的帐户密码。< / p>

使用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.全部在一起。

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

此外,Windows用户是与postresql用户分开还是相同(彼此依赖)?

编辑:

正如您所看到的,如果Aisha不是超级用户,它不会让我选择。或其他选择。

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

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

4 个答案:

答案 0 :(得分:12)

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

因此,您应首先使用用户postgres访问服务器,然后为自己创建一个用户。请勿更改服务器内的用户名或服务器的正在运行的用户!只需创建一个新用户名并授予其所需的权限。

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

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

答案 1 :(得分:10)

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

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

答案 2 :(得分:1)

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

createuser --createdb -U postgres --login -P 'your_new_user'
@ sami-kuhmonen是对的,但他解决问题的方法对我没有用。

答案 3 :(得分:0)

如果存储密码的加密与 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错误'。

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

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