如何撤销PostgreSQL中ROLE1成员user1的Schema创建权限?
解决方案
要实现撤销user1的Schema创建权限但保留ROLE1赋予的其他权限,可以通过数据库级别权限撤销来实现,具体步骤如下:
1. 撤销user1的数据库CREATE权限
创建Schema的权限本质是数据库级别的CREATE权限,直接撤销user1在目标数据库上的该权限即可覆盖其从ROLE1继承的权限:
-- 替换mydb为你的实际数据库名称 REVOKE CREATE ON DATABASE mydb FROM user1;
2. (可选)清理PUBLIC角色的默认权限
如果你的数据库中PUBLIC角色默认拥有CREATE权限(部分PostgreSQL版本默认开放此权限),为避免user1通过PUBLIC继承该权限,可一并撤销:
REVOKE CREATE ON DATABASE mydb FROM PUBLIC;
验证权限
使用user1登录数据库后,执行CREATE SCHEMA test_schema;,若返回ERROR: permission denied for database mydb则说明权限限制生效,其他原ROLE1赋予的权限不受影响。
内容的提问来源于stack exchange,提问作者Andrey
相关产品推荐
相关产品推荐

