授予角色的语法:
grant
<object/system privilege>
to
<role
name
>;
一般情况下,在新建数据库用户后,都会习惯性的给用户授权CONNECT角色和RESOURCE角色:
GRANT connect,resource,dba TO 用户;
1、CONNECT 角色,拥有Connect权限的用户只可以登录ORACLE(仅具有创建SESSION的权限),不可以创建实体,不可以创建数据库结构。
2、RESOURCE 角色,是授予开发人员的。拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。同时,当把ORACLE resource角色授予一个user的时候,不但会授予ORACLE resource角色本身的权限,而且还有unlimited tablespace权限,但是,当把resource授予一个role时,就不会授予unlimited tablespace权限。
Create trigger--建立触发器;
Create sequence—建立序列;
Create type--建立类型;
Create procedure--建立过程;
Create cluster--建立聚簇;
Create operator--创建操作者;
Create indextype--创建索引类型;
Create table--建表。
3、DBA角色,--是授予数据库维护人员的。拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
从dba_sys_privs查看权限grantee privilege:
SQL>Select grantee,privilege from dba_sys_privs
Where grantee= 'DBA'
Order by privilege;
注意:
- 10g 开始,connect里面只有 create session权限了;
- resource权限里没有 create view;
- 还需要重点说明下的是 unlimited tablespace(授予了resource权限给user, user1 其实自动有了unlimited tablespace权限)
4、Unlimited tablespace的特点:
1、系统权限unlimited tablespace不能被授予role,只能被授予用户。也就是说,unlimited tablespace系统权限不能包含在一个角色role中
2、unlimited
tablespace没有被包括在resource role和dba role中,但是unlimited
tablespace随着resource或者dba的授予而授予用户的。也就是说,如果将role角色授予了某个用户,那么这个用户将会拥有unlimited
tablespace系统权限
3、unlimited
tablespace不能伴随这resource被授予role而授予用户。也就是说加入resource角色被授予了role_test角色,然后把role_test授予了test用户,但是此时unlimited
tablespace没有被授予test用户
5、数据字典dba_tab_privs
各个列属性描述如下:
GRANTEE :被授予权限的用户或角色
OWNER: 权限拥有者
TABLE_NAME:对象名字
GRANTOR:执行授予权限用户的名字
PRIVILEGE:对象的权限
GRANTABLE:是否授予GRANT OPTION权限
HIERARCHY:是否授予HIERARCHY OPTION