Oracle中授予用户组可转授增改查删权限的SQL语句咨询
Oracle权限转授问题解答
问题1:让用户组具备权限转授能力的SQL语句
要让用户组(Oracle中通常指角色)能够把获得的对象权限(比如查询、更新这类表级权限)转授给其他用户,核心是在GRANT语句末尾加上WITH GRANT OPTION子句。
举个实际例子:如果要给用户组Data_Editor授予Orders表的查询和更新权限,同时允许它把这些权限转授出去,SQL语句是这样的:
GRANT SELECT, UPDATE ON Orders TO Data_Editor WITH GRANT OPTION;
额外说明:如果你的需求是让用户组能把角色本身授予其他用户(不是角色拥有的具体权限),那就要用
WITH ADMIN OPTION,比如:GRANT Data_Editor TO Manager_User WITH ADMIN OPTION;这时
Manager_User就可以把Data_Editor角色分配给其他用户了。
问题2:完善已有GRANT语句,添加权限转授能力
你写的基础语句已经覆盖了需要的权限,只要在末尾加上WITH GRANT OPTION,就能让New_User_Group拥有转授这些权限的能力。修改后的完整语句如下:
GRANT SELECT, INSERT, UPDATE, DELETE ON Example_Table TO New_User_Group WITH GRANT OPTION;
关键注意事项
这里要提个Oracle的特性:WITH GRANT OPTION的权限不能通过角色传递。也就是说,如果你把New_User_Group角色授予某个普通用户,这个用户没办法直接把Example_Table的权限转授给别人——只有直接被授予带WITH GRANT OPTION权限的用户,才能执行转授操作。如果你的需求是让角色的所有成员都能转授权限,可能需要直接给每个用户单独授予权限并添加WITH GRANT OPTION,而不是通过角色批量分配。
内容的提问来源于stack exchange,提问作者user666
相关产品推荐
相关产品推荐

