1. 系统权限是指能够执行特定sql命令的权利,它用于控制用户可以执行的一个或者一组数据库操作。比如当用户具有create table的权限可以在自己的方案中建立表,当用户具有create any table的权限的时候,可以在任何方案中建表。
2. 授予系统权限一般都是由dba用户来完成的,如果用其他用户来授予系统权限,则要求该用户必须具有grant any privilege的系统权限。在授予系统权限的时候,可以使用with admin option来使得接受系统权限的用户可以继续传递系统权限。
3. 回收系统权限是由dba完成的,如果用其他用户回收系统权限,则该用户必须具有相应的系统权限以及转授系统权限的选项(with admin option)。回收系统权限使用revoke。
同时需要注意当系统权限进行回收时的级联回收问题。
注:系统权限的回收不是级联回收。
4. 对象权限是指访问其他方案的权利,当然前提是具有访问其他方案的权限。
注:通过数据字段视图可以显示用户或者角色所具有的对象权限。视图为dba.tab.privs
5. 对象权限可以授予角色、用户、public。如果在授予A用户的时候,添加with grant option选项,则可以将权限转授给其他用户。注意:with grant option 不能授予给角色。
6. 登录数据库系统的系统权限为create session。
7. 仅授予A用户操作B表的C字段:grant update on B(C) to A;
8. 如果A用户想操作B用户方案的包、过程、函数。那么A用户必须具备execute权限。
9. 如果想授予A用户能在B用户的C表中创建索引,则需要授予A用户给B表创建索引的权限。
grant index on B.C to A;
10. 收回对象权限同样是使用revoke命令,但是对象权限的回收是级联回收操作。
11. 预定义角色是指oracle所提供的角色,每种角色都用于执行一些特定的管理任务。
1) Connect角色具有一般开发人员所具备的大部分权限,当建立一个用户后,给该用户授予connect和resource角色就可以了。Connect角色的系统权限包括 create session、alter session、create cluster(创建组) 、create database link、create table 、create view 、create sequence(创建序列)。
2) Resource角色具有应用开发人员所需要的其他权限、比如建立存储过程、创建触发器等,同时resource角色隐含了unlimited tablespace(无限制表空间)系统权限。Resource角色具有如下权限:create cluster;create indextype;create table;create sequence;create type;create procedure;create trigger;
3) Dba角色具有所有的系统权限,以及with admin option选项,但是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库)
12. 自定义角色一般都是由dba进行创建,如果A用户想创建角色,那么A用户必须具有create role的权限。在创建角色的时候,可以指定该角色在进行修改的时候,是否需要进行验证。
1) Create role rolename not identified;
2) Create role rolename identified by rolepassword;
13. 给角色授权和给用户授权基本相同,不同的地方在于系统权限unlimited tablespace和对象权限with admin option两种系统权限不能授予给角色。
14. 将角色授予用户通常都是有dba完成的,如果需要A用户完成角色的授权,则A用户需要具有grant any role的权限。
Grant rolename to A with admin option;意为A用户同样具有将角色rolename传递给其他用户的权限。
15. 删除角色使用命令drop role一般是dba来执行。如果A用户想拥有删除角色的权限,则A用户必须drop any role的系统权限。
注:如果某一个角色被删除了,那么拥有该角色的权限的用户就不能再使用这些权限了。
16. 显示所有角色:select * from dba_roles;
17. 显示角色具有的系统权限
Select privilege,admin_option from role_sys_privs where role= ‘rolename’;
18. 显示用户具有的角色,以及默认角色
Select granted_role,default_role from dba_role_privs where grantee= ‘username’;