oracle权限分为系统权限和对象权限;
系统权限主要是指用户对系统的使用权限,如CREATE SESSION、CREATE TABLE、CREATE ANY TABLE等等,这里要特别说明下DROP TABLE不是系统权限,也没有这个权限,可能是因为oracle认为你有了CREATE TABLE的权限,默认就给你DROP TABLE。但DROP ANY TABLE这个系统权限是有的。
对象权限主要是对对象操作的权限,如select、update、insert、delete等等。
系统权限的赋权
grant 系统权限 to 用户名 [with admin option]
with admin option是可选的,加上这个的话,你赋权的用户可以将这个系统权限赋给其他用户。缺省是不行的。
多个权限和对象可以用逗号分隔。
对象权限的赋权
grant 对象权限 on 对象名称 to 用户名 [with grant option]
with grant option是可选的,注意这里与系统权限的不同,加上这个的话,你赋权的用户可以将这个对象权限赋给其他用户。缺省是不行的。
多个权限和对象可以用逗号分隔。
系统权限的回收
revoke 系统权限 from 用户名
系统权限with admin option不支持级联收回,支持跨级收回。
对象权限的回收
revoke 对象权限 from 用户名
系统权限with admin option不支持跨级收回,支持级联收回。
这里解释下跨级回收和级联回收
例如有3个用户,a、b、c
a给b赋了系统权限和对象权限,b给c赋了系统权限和对象权限。
当a回收b的系统权限时,c的系统权限保持不变,这就叫不支持级联回收;
当a回收了c的系统权限时,就叫跨级回收;
当a回收b的对象权限时,c的对象权限同时会被收回,这就是级联回收;
a用户不能回收c用户的对象权限,这就叫不支持跨级回收。
系统权限表
SYSTEM_PRIVILEGE_MAP
里面包含了所以系统权限
用户系统权限视图
dba_sys_privs
user_sys_privs
用户对象权限视图
dba_tab_privs
user_tab_privs