ble的权限。
现在lisi想把该权限传递授权给wangwu用户执行以下语句:grant alter any table to wangwu;执行后报“权限不足”。
要想lisi也可以传递权限,可以在sys用户授权时加上with admin option的选项,该选项就说明了还拥有权限的管理能力。
即:grant alter any table to lisiwith admin option;这样lisi就可以把alter any table的权限传递给wangwu了。
要想wangwu也可以传递该权限,也使用该admin选项即可。
查看lisi的系统权限,他的alter any table权限的同一行的adm字段取值由NO变为YES,说明lisi对该权限具有分配功能了。
对象权限的传递:
与系统权限的传递类似,不过后面的选项有所改变:
加入sys创建了一个A表。授予lisi的select权限:
grant select On A to lisi;
如果想让lisi拥有对A表的select权限的分配能力,只需修改为:
grant select On A to lisiwithgrantoption;
思考:如果sys管理员撤销了lisi的权限,那么wangw的权限是否也被撤销了呢
通过角色对权限进行管理
如果按照上面的权限管理方法 ,对每个用户逐一的分配权限,必然会很混乱,导致管理的困难。所以oracle提供了角色来对权限进行集合化的管理。
角色就是权限的集合。
在sys下创建角色:
create role myrole;
给角色添加权限:
grant create session to myrole;
grant create table to myrole;
创建用户:
create user zhangsan;
grant myrole to zhangsan;//赋予以上的两个权限给zhangsan
有些系统权限无法直接赋予角色,因为该权限太大了,比如unlimited tablespace。
例如:执行grant unlimited tablespace to myrole;
出现错误提示:无法将unlimited tablespace授予角色
删除角色:
drop role myrole;
权限举例:
create table create any table
[alter table] alter any table
[delete table] delete any table
补充:oracle数据库不含紫色的权限类型。因为有了create table权限,说明表的一切都归创建者。不需要还指定alter table和drop table权限了,默认就有了。
而create any table这个权限表明该用户可以给其他用户创建表。
示例:wangwu给lisi创建一个表temp
create tablelisi.temp(id int);//