解决方法
这意味着Postgres正在尝试使用Ident协议对用户进行身份验证,而不是. Ident auth的工作原理如下:
>数据库’db’上有数据库角色’foo’
>您的pg_hba.conf文件(在/ etc / postgres-something / main中)将’Ident’定义为连接到数据库db的协议,用于从某些主机连接的用户
>建立连接的unix用户名是’foo’
>在用户连接的机器上运行的Ident服务器确认其用户名确实是’foo’
可能的原因和解决方案
>您尝试连接的计算机上没有运行Ident服务器.通过尝试在端口113上连接它来测试它.如果失败,请安装Ident服务器(例如,sudo apt-get install oidentd).
>有一个Ident服务器,但没有数据库角色匹配您尝试连接的名称(上例中的’foo’).因此,通过以某种方式连接到具有超级用户权限的数据库来创建它,并执行CREATE ROLE foo.或者在/etc/postgresql/…/main/pg_ident.conf中添加一个条目.
>也许shell用户名与数据库角色不匹配.通过在连接进行时连接到Ident服务器并传递正确的端口号,您可以获得may be able to test this.
>也许你真的想用密码连接,而不是用身份证.适当地编辑pg_hba.conf文件.例如,更改:
host all all 127.0.0.1/32 ident
至
host all all 127.0.0.1/32 md5