PostgreSQL新建用户p2无法登录,提示unknown user求助
PostgreSQL角色与系统用户的区别及登录解决方案
嘿,我一眼就看出问题所在啦——你把PostgreSQL的数据库角色和Linux系统用户搞混啦!
核心原因
你用createuser -P -s -e p2创建的是PostgreSQL内部的数据库角色,它只存在于PostgreSQL的权限体系里,并不是Linux操作系统层面的用户。所以当你执行sudo -u p2 -i时,系统自然找不到这个用户,报错也就理所当然了。而\du能看到p2,是因为这个命令显示的是PostgreSQL的角色列表,和系统用户完全是两码事。
正确的登录方法
你有两种方式可以登录到p2这个数据库角色:
通过postgres系统用户中转登录
先切换到postgres系统用户,再指定p2角色登录:sudo -u postgres psql -U p2输入你设置的密码123就能进入了。
直接用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
相关产品推荐
相关产品推荐

