Azure PostgreSQL 16创建角色后当前角色自动成成员且无法撤销问题咨询
Azure Database for PostgreSQL 16角色成员默认关联问题解答
核心结论
这不是PostgreSQL 16原生的bug,而是Azure Database for PostgreSQL服务层面的定制行为。
具体分析
- PostgreSQL 16原生版本中,创建新角色时并不会自动将创建者添加为该角色的成员,这一点和15版本保持一致。
- Azure为其托管的PostgreSQL服务做了定制化修改:当使用服务默认的管理员角色(比如你提到的
Cloudsql)创建新角色时,会自动将管理员角色设为新角色的成员,并且通过权限限制禁止撤销这个关联——这是Azure为了维持对托管资源的管理控制权而设计的机制。
验证与应对
- 验证原生行为:如果在本地自建的PostgreSQL 16实例中测试,创建新角色后查询
pg_auth_members表,不会看到创建者被自动添加为成员的情况。 - Azure环境下的应对:
- 若不需要管理员角色拥有新角色的权限,可以通过显式回收权限的方式替代撤销成员身份,比如执行:
REVOKE ALL PRIVILEGES ON DATABASE your_db FROM localrole; -- 或针对特定对象回收权限 - 若需要完全独立的角色,可考虑使用非管理员角色(前提是该角色拥有
CREATEROLE权限)来创建新角色,此时不会触发自动关联管理员的行为。
- 若不需要管理员角色拥有新角色的权限,可以通过显式回收权限的方式替代撤销成员身份,比如执行:
内容的提问来源于stack exchange,提问作者Akhil Kumar
相关产品推荐
相关产品推荐

