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

使用postgres角色执行psql命令:认证失败与成功的命令差异解析

两条PostgreSQL psql命令的差异及认证问题解析

命令核心差异

  • sudo psql -U postgres:以当前操作系统用户的身份执行sudo,启动psql时指定数据库用户为postgres。此时发起PostgreSQL连接的操作系统用户仍是你自己,并非postgres。
  • sudo -u postgres psql:先通过sudo切换到操作系统用户postgres,再以该用户身份启动psql。此时发起连接的操作系统用户就是postgres,psql默认会用当前操作系统用户名作为数据库连接用户。

认证成功/失败的原因

PostgreSQL本地unix socket连接默认采用peer认证,核心规则是:验证发起连接的操作系统用户名与请求的数据库用户名是否一致。

  • 第一条命令中,你的操作系统用户名和指定的数据库用户postgres不匹配,peer认证不通过,因此抛出「Peer authentication failed for user "postgres"」错误。
  • 第二条命令中,切换到OS用户postgres后,psql默认使用该用户名作为数据库用户,两者完全一致,符合peer认证规则,所以连接成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:35:16