授予角色的語法:
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