从命令行使用postgresql获取身份验证失败错误

时间:2012-11-23 14:59:22

标签: postgresql centos

当我尝试从命令行登录时

psql -h dbserver -U testuser test

然后我收到此错误

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

这是我的

  

nano -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

3 个答案:

答案 0 :(得分:7)

使用-U身份验证时,您无法在psql中指定ident的非默认用户。您不会以该用户身份运行psql,因此身份验证将失败。

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

答案 1 :(得分:1)

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

  

日志:提供用户名(DB_USER)和经过身份验证的用户名   (SHELL_USER)与FATAL不匹配:对用户身份验证失败   " DB_USER"

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

答案 2 :(得分:1)

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

以下是我在Windows中解决此问题的方法:

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

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

    登录“postgres”用户来执行此操作

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

    1. 将pg_hba.conf中的身份验证方法更改为md5。 另外,
      使用以下命令更改用户的密码: ALTER USER ... PASSWORD。