从命令行使用PostgreSQL时出现身份验证失败错误

6
当我尝试通过命令行登录时,就像这样:
psql -h dbserver -U testuser test

然后我遇到了这个错误。
psql: FATAL:  Ident authentication failed for user "testuser"

这是我的

nano -w /var/lib/pgsql/data/pg_hba.conf

意思是,打开/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

2
你是否正在运行 identd? - Marc B
你是否已经授予该用户登录权限? - andrefsp
将行local all all ident更改为local all all md5,然后按照Craig的答案或运行identd。 - Robert H
3个回答

10
当使用身份验证方式ident时,无法在psql中使用-U指定非默认用户。因为你不能作为该用户运行psql,所以身份验证会失败。
你必须使用sudo -u testuser psql test或更改pg_hba.conf,以便至少对于testuser在数据库test上使用md5密码验证,并使用ALTER USER ... PASSWORDtestuser设置密码(如果他们还没有密码) 。

1

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

日志:提供的用户名(DB_USER)和已认证的用户名(SHELL_USER)不匹配。致命错误:用户“DB_USER”的标识验证失败。

在我的情况下解决方法是将 /var/lib/pgsql/data/pg_hba.conf 中的所有认证方法更改为md5


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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接