GRANT時候,權限基本分爲兩類:
系統權限:系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。
實體權限:某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。
接下來看系統權限,
DBA:擁有全部特權,是系統最高權限,只有DBA纔可以創建數據庫結構。
RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。
CONNECT:擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
對於普通用戶:授予connect, resource權限。
對於DBA管理用戶:授予connect,resource, dba權限。
且系統權限只能由DBA用戶授出:sys, system(最開始只能是這兩個用戶)。普通用戶通過授權可以具有與system相同的用戶權限,
但永遠不能達到與sys用戶相同的權限,system用戶的權限也可以被回收
另外,對於WITH ADMIN OPTION級聯授權的問題,
1)如果使用WITH ADMIN OPTION爲某個用戶授予系統權限,那麼對於被這個用戶授予相同權限的所有用戶來說,取消該用戶的
系統權限並不會級聯取消這些用戶的相同權限。
2)系統權限無級聯,即A授予B權限,B授予C權限,如果A收回B的權限,C的權限不受影響;系統權限可以跨用戶回收,即A可以
直接收回C用戶的權限。
3、證明下爲什麼resource和connect的角色不能創建視圖。
SQL> select role, count(*) from role_sys_privs group by role;
ROLE COUNT(*)
------------------------------ ----------
EXP_FULL_DATABASE 8
DBA 160
SCHEDULER_ADMIN 6
RESOURCE 8
IMP_FULL_DATABASE 68
CONNECT 1
可以看到RESOURCE和CONNECT具有的權限個數。
下面看看各自都有什麼權限:
SQL> select grantee,privilege from dba_sys_privs where grantee='RESOURCE' order by privilege;
GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
RESOURCE CREATE CLUSTER
RESOURCE CREATE INDEXTYPE
RESOURCE CREATE OPERATOR
RESOURCE CREATE PROCEDURE
RESOURCE CREATE SEQUENCE
RESOURCE CREATE TABLE
RESOURCE CREATE TRIGGER
RESOURCE CREATE TYPE
8 rows selected.
SQL> select grantee,privilege from dba_sys_privs
where grantee='CONNECT' order by privilege;
------------------------------ ----------------------------------------
CONNECT CREATE SESSION