5

当我尝试像这样从命令行登录时

psql -h dbserver -U testuser test

然后我得到这个错误

psql: FATAL:  Ident authentication failed for user "testuser"

这是我的

纳米 -w /var/lib/pgsql/data/pg_hba.conf

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          password
# IPv6 local connections:
host    all         all         ::1/128               ident
host    all     all     192.168.0.1/24  password
4

3 回答 3

9

使用身份验证时,您不能使用-Uin指定非默认用户。您不会以该用户身份运行,因此身份验证将失败。psqlidentpsql

您必须使用sudo -u testuser psql test或更改pg_hba.conf以便身份验证(至少testuser在 db 上test)使用md5密码身份验证,并为testuserwith设置密码(ALTER USER ... PASSWORD如果他们还没有密码)。

于 2012-11-23T15:37:42.737 回答
1

我在中看到以下错误/var/lib/pgsql/data/pg_log/postgresql-Wed.log

日志:提供的用户名 (DB_USER) 和经过身份验证的用户名 (SHELL_USER) 不匹配 致命:用户“DB_USER”的身份验证失败

我的解决方案是将所有身份验证方法更改/var/lib/pgsql/data/pg_hba.confmd5

于 2014-04-16T14:31:35.927 回答
1

如上所述,此问题可能有两个原因 - testuser 不存在 - 密码错误或用户身份验证失败。

这是我在 Windows 中为解决此问题所做的工作:

  1. 通过 pgAdmin 检查:转到您的程序并搜索 pgAdmin 并运行。通常这将在http://127.0.0.1:51865/browser/运行

检查服务器“PostgreSQL”下的登录/组角色选项卡。检查用户是否存在。您也可以通过命令“psql -U postgres”登录到“postgres”用户 并运行命令“\du”来执行此操作

如果用户 testuser 不存在,则创建它。

  1. 将 pg_hba.conf 中的身份验证方法更改为 md5。或者,
    使用以下命令更改用户的密码:ALTER USER ... PASSWORD。
于 2018-05-10T18:16:52.613 回答