在WSL/Linux终端无法创建PostgreSQL 14超级用户
问题分析与解决
核心问题
你执行sudo -u postgres createuser --interactive时,错误提示连接数据库的角色是my-user——但此时本该以postgres系统用户对应的PostgreSQL超级用户身份去连接创建新角色,出现这个错误是因为sudo执行时没正确切换环境,导致createuser误以当前Linux用户my-user的身份连接PostgreSQL,而该角色还没创建,所以触发报错。
解决步骤
强制清空环境变量执行命令:sudo默认会保留部分当前用户的环境变量,容易导致身份混淆。用这条命令完全模拟postgres用户的登录环境运行createuser:
sudo -i -u postgres createuser --interactive之后按提示输入
my-user并确认超级用户权限即可。手动指定连接角色:如果上面的命令还有问题,直接显式指定用PostgreSQL默认超级用户
postgres连接:sudo -u postgres createuser -U postgres --interactive my-user直接用SQL命令创建:要是createuser工具还是出问题,跳过它直接用psql执行SQL创建:
sudo -u postgres psql -c "CREATE ROLE \"my-user\" WITH SUPERUSER LOGIN;"
验证
创建完后,用这条命令检查角色是否存在:
sudo -u postgres psql -c "\du"
输出里能看到my-user,且标注了超级用户权限就说明成功了。
内容的提问来源于stack exchange,提问作者andresnb
相关产品推荐
相关产品推荐

