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

PostgreSQL中授权administrator角色后test_user无法创建用户

问题原因与解决方案

为什么test_user无法继承CREATEROLE权限?

PostgreSQL中,角色的**特殊属性(如CREATEROLE、SUPERUSER、CREATEDB等)是角色自身的固有属性,无法通过角色继承传递给成员用户。只有角色被授予的对象权限(比如对表、视图的读写权限)**才能被成员用户继承。

从\du的输出可以看到,administrator的CREATEROLE是它自身的属性,并非通过权限授予获得,因此test_user作为它的成员,无法自动继承这个属性来创建用户。

解决方法

有两种可行的处理方式:

  1. 直接给test_user添加CREATEROLE属性
    执行以下SQL语句,直接为test_user赋予创建角色的权限:
ALTER USER test_user CREATEROLE;

操作完成后,test_user即可直接创建用户,无需依赖administrator角色。

  1. 临时切换到administrator角色执行操作
    如果不想修改test_user的属性,可以在需要创建用户时,临时切换到administrator角色:
SET ROLE administrator;
CREATE USER new_test_user; -- 替换为实际需要创建的用户名
RESET ROLE;

这种方式仅临时使用administrator的权限,操作完成后会恢复test_user的原有权限状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:27:31