Postgres错误消息:致命:用户“...”的身份验证失败

Modified on: Thu, 07 Nov 2019 20:00:03 +0800

假设您看到此消息:

FATAL:  Ident authentication failed for user "..."

此错误消息的原因是什么?

最佳答案

这意味着Postgres正在尝试使用Ident协议对用户进行身份验证,但不能。 Ident auth的工作原理如下:

  • 数据库'db'
  • 上有数据库角色'foo'
  • 您的pg_hba.conf文件(在/etc/postgres-something/main中)将'Ident'定义为连接数据库db用于从某些主机连接的用户
  • 进行连接的unix用户名是'foo'
  • 在用户连接的计算机上运行的Ident服务器确认其用户名确实是'foo'

可能的原因和解决方案:

  1. 您尝试连接的计算机上运行无识别服务器。通过尝试在端口113上连接到它来测试它。如果失败,请安装Ident服务器(例如,sudo apt-get install oidentd)。
  2. 有一个Ident服务器,但没有数据库角色匹配您尝试连接的名称(上例中的'foo')。因此,通过以超级用户权限以某种方式连接到数据库来创建它,并执行CREATE ROLE foo。或者在/etc/postgresql/.../main/pg_ident.conf中添加一个条目。
  3. 可能shell用户名数据库角色不匹配。您可以通过在连接进行时连接到Ident服务器进行测试,并传递正确的端口号。
  4. 也许你真的想用密码连接,而不是识别。适当地编辑pg_hba.conf文件。例如,更改:

    host all all 127.0.0.1/32 ident
    

    host all all 127.0.0.1/32 md5
    
  5. 醇>

相关问答

添加新评论