You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何指定参数用psql连接PostgreSQL时出现Ident认证失败错误?

问题原因与解决办法

为什么会报Ident认证失败?

这两种连接方式走的是完全不同的认证逻辑:

  • 直接输入psql时,PostgreSQL客户端默认用Unix域套接字连接数据库,此时会匹配pg_hba.conf里的local规则,通常默认是peer认证——也就是直接校验你的操作系统用户名和数据库用户名是否一致,所以你能顺利登录。
  • 当你加上-h localhost参数后,客户端会切换成TCP/IP连接,这时会匹配pg_hba.conf里的host规则,默认配置的是ident认证。这种认证方式会通过Ident协议去验证客户端的操作系统用户身份,但很多系统要么没正确配置Ident服务,要么这个认证逻辑和你的场景不匹配,就导致了认证失败。

修改命令的两种可行方案

  • 方案1:回到Unix套接字连接(最简便)
    直接去掉-h localhost参数,命令改成:

    psql -U myusernamexy mydatabasexy
    

    这样就和你直接输入psql的连接方式一致,利用peer认证就能正常登录。

  • 方案2:强制使用密码认证(如果需要TCP连接)
    如果你确实需要用TCP/IP连接测试,可以加上-W参数强制要求输入密码(前提是你已经给myusernamexy设置了数据库密码,并且pg_hba.conf里host规则的认证方式是md5或scram-sha-256):

    psql -h localhost -p 5432 -U myusernamexy -W mydatabasexy
    

    执行命令后输入你的数据库用户密码就能成功连接。

内容的提问来源于stack exchange,提问作者nexonvantec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:35:23