我在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 |||创建新用户但弹出相同的错误:
用户不存在,为什么会这样做?
答案 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'
答案 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 中的密码加密,您将需要更改所有用户的密码。
希望这能帮助其他人解决这个问题。