权限的种类:系统权限 和 对象权限
一、系统权限
所谓系统权限,就是oracle里已经写死的权限,这些权限,我们是不能自己去扩展的,比如select any table, create any table等。
1.1、系统权限种类
select count(*) from dba_sys_privs;
1.2、系统权限传递:
增加WITH ADMIN OPTION选项,则得到的权限可以传递。
grant XXX to XXX WITH ADMIN OPTION;
1.3、系统权限回收:系统权限只能由DBA用户回收,统权限收回的时候是不会级联收回的。
revoke XXX from XXX;
1.4、查看用户拥有的系统权限。
SQL> SELECT *
2 FROM DBA_SYS_PRIVS
3 WHERE GRANTEE = 'ANDY'
4 UNION ALL
5 SELECT *
6 FROM DBA_SYS_PRIVS
7 WHERE GRANTEE IN
8 (SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ANDY');
二、对象权限
所谓对象权限,就是针对于特定的对象的权限,系统权限是限定了可以操作的功能,而object permission就更细化了,具体到了莫个对象你可以操作的功能的权限。
2.1、对象权限种类
select count(*) from dba_tab_privs;
2.1、对象权限传递:
增加with grant option选项,则得到的权限可以传递。
grant XXX to XXX with grant option;
2.2、对象权限回收:对象权限可以传递赋予,但是回收的时候是级联回收的。
revoke XXX from XXX;
2.4、查看用户拥有的对象权限。
SQL> SELECT *
2 FROM DBA_TAB_PRIVS
3 WHERE GRANTEE = 'ANDY'
4 UNION ALL
5 SELECT *
6 FROM DBA_TAB_PRIVS
7 WHERE GRANTEE IN
8 (SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ANDY');
三、角色
所谓角色,就是一组权限的集合。
3.1、查看系统所有角色
SQL> select * from dba_roles;
3.2、 查看角色中包含的权限
SQL> select * from role_sys_privs where role in ('RESOURCE');
3.3、 创建角色并授权
SQL> create role andy_role;
Role created.
SQL> grant connect,resource to andy_role;
Grant succeeded.
3.4、 查看用户所拥有的角色。 (用被查询用户登录)
SQL> select * from USER_ROLE_PRIVS ;