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

PostgreSQL新建用户p2无法登录,提示unknown user求助

PostgreSQL角色与系统用户的区别及登录解决方案

嘿,我一眼就看出问题所在啦——你把PostgreSQL的数据库角色和Linux系统用户搞混啦!

核心原因

你用createuser -P -s -e p2创建的是PostgreSQL内部的数据库角色,它只存在于PostgreSQL的权限体系里,并不是Linux操作系统层面的用户。所以当你执行sudo -u p2 -i时,系统自然找不到这个用户,报错也就理所当然了。而\du能看到p2,是因为这个命令显示的是PostgreSQL的角色列表,和系统用户完全是两码事。

正确的登录方法

你有两种方式可以登录到p2这个数据库角色:

  1. 通过postgres系统用户中转登录
    先切换到postgres系统用户,再指定p2角色登录:

    sudo -u postgres psql -U p2
    

    输入你设置的密码123就能进入了。

  2. 直接用psql指定角色登录
    如果你已经在自己的系统用户下,直接运行:

    psql -U p2 -d postgres
    

    同样输入密码123即可登录(前提是你的PostgreSQL配置允许本地密码登录,默认是开启的)。

如果你非要用sudo -u p2的方式

那你得先在Linux系统里创建p2这个用户:

sudo useradd -m p2
sudo passwd p2

创建完成后,sudo -u p2 -i就能切换到这个系统用户了,之后再用psql -U p2登录PostgreSQL就行。不过其实完全没必要这么做,除非你有特殊的系统权限需求。

总结一下:你创建PostgreSQL角色的命令是完全正确的,只是登录时搞错了对象——把数据库角色当成系统用户来操作了,换用上面的正确方法就能正常登录啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:49:28