PostgreSQL 12.14撤销public schema的CREATE权限无效,如何禁止只读用户建表?
解决PostgreSQL只读用户仍能在public schema创建表的问题
问题出在PostgreSQL的默认权限配置上:所有新建用户默认都会加入内置的public角色,而PostgreSQL默认给public角色授予了public schema的CREATE权限。你单独撤销user1的CREATE权限,但public角色的权限依然会让user1获得创建表的权限。
按照以下步骤修复:
- 撤销
public角色在publicschema的CREATE权限REVOKE CREATE ON SCHEMA public FROM public; - 验证效果:切换到
user1执行建表语句,此时会提示权限不足,达到禁止创建的目的。 - 超级用户不受影响:superuser默认拥有所有权限,仍然可以正常在
publicschema执行各类操作。
如果后续需要让其他用户在public schema创建对象,可单独授予权限:
GRANT CREATE ON SCHEMA public TO 指定用户名;
内容的提问来源于stack exchange,提问作者M Shen
相关产品推荐
相关产品推荐

