如何配置SQL Server特定Schema下用户创建表的专属所有权
特定Schema下建表仅创建者可访问的配置方案
要实现「特定Schema中用户创建的表仅本人拥有所有权、其他获得该Schema访问权限的用户无任何表操作权限」的需求,通过修改Schema的默认权限规则即可实现,以下是具体操作(以PostgreSQL为例,其他关系型数据库逻辑类似,可对应调整语法):
- 前置要求:仅给需要在
Schema1中建表的用户开放该Schema的USAGE权限,这是用户可以进入Schema创建对象的基础,授权命令如下:GRANT USAGE ON SCHEMA Schema1 TO <授权用户/用户组>; - 第一步:清理
Schema1下所有已存在表的公开权限,避免历史权限遗留影响效果:REVOKE ALL ON ALL TABLES IN SCHEMA Schema1 FROM PUBLIC; - 第二步:修改
Schema1的默认权限规则,所有用户在该Schema下新建表时,默认不向公共用户组PUBLIC授予任何权限,仅创建者本人保留全部操作权限:ALTER DEFAULT PRIVILEGES IN SCHEMA Schema1 REVOKE ALL ON TABLES FROM PUBLIC;
配置完成后效果完全符合需求:
User1在Schema1中创建的表默认仅对User1开放SELECT、CREATE、UPDATE、DELETE、ALTER等全量权限- 其他拥有
Schema1访问权限的用户,无法对User1创建的表执行任何操作,包括读取 - 规则对所有在
Schema1中建表的用户生效,任意用户创建的表都仅本人可访问
内容的提问来源于stack exchange,提问作者Venk AV
相关产品推荐
相关产品推荐

