引言:
當剛剛建立新使用者時,使用者沒有任何許可權,也不能執行任何操作。如果要執行某種待定的資料庫操作,則必須為其授予系統許可權;如果使用者要訪問其它方案的對象,則必須為其授予對象許可權。為了簡化許可權的管理,可以使用角色。
(1)角色:一個角色可以被授予系統許可權,或者對象許可權
oracle事先定義了若干角色,查看所有角色:
SQL> select * from dba_roles;
其中:
DBA: 擁有全部特權,是系統最高許可權,只有DBA才可以建立資料庫結構。
RESOURCE:擁有Resource許可權的使用者只可以建立實體,不可以建立資料庫結構。
CONNECT:擁有Connect許可權的使用者只可以登入Oracle,不可以建立實體,不可以建立資料庫結構。
可以查詢sys_dbs,sys_privs可以瞭解各種角色擁有的許可權
eg:
對於普通使用者:授予connect, resource許可權。
對於DBA系統管理使用者:授予connect,resource, dba許可權。
(2)許可權:指執行特定類型sql命令或是訪問其它方案對象的權利,包括系統許可權和對象許可權
A、系統許可權:描述使用者對資料庫的相關許可權,指執行特定類型sql命令的權利,它用於控制使用者可以執行的一個或是一組資料庫操作。比如當使用者具有create table許可權時,可以在其方案中建表,當使用者具有create any table 許可權時,可以在任何方案中建表。
常用的有:
create session 串連資料庫 create table 建表
create procedure 建過程、函數、包
例如,CREATE TABLE許可權允許使用者建立表,GRANT ANY PRIVILEGE 許可權允許使用者授予任何系統許可權。
查看使用者系統許可權:
SQL> select * from dba_sys_privs;
SQL> select * from all_sys_privs;
SQL> select * from user_sys_privs;
授予系統許可權傳遞:
一般情況下,授予系統許可權是有DBA完成的,如果用其它使用者來授予系統許可權,則要求該使用者必須具有grant any privilege 的系統許可權在授予系統許可權時,可以帶有with admin option 選項。
grant 系統許可權 to 使用者名稱 [with admin option].帶上with子句,可以讓該使用者有許可權把系統許可權授予其他使用者。
eg:system 給使用者xiaoming 許可權時:
grant connect to xiaoming with admin option//意味使用者xiaoming可以把connect 許可權傳遞下去
回收系統許可權:
一般情況下,回收系統許可權是DBA來完成的,如果其它的使用者來回收系統許可權,要求該使用者必須具有相應系統許可權及轉授系統許可權的選項(with admin option),回收系統許可權使用revoke來完成。
eg:
SQL> revoke create session from ***(使用者) 級聯回收
B、對象許可權:使用者對其他使用者的資料對象訪問/操作的許可權,其中,資料對象指使用者建立的表,視圖、預存程序、觸發器等。
常用的有:alter、delete、select、insert、update 等。
查看對象許可權:通過資料欄位視圖可以顯示使用者或是角色所具有的對象杼,視圖為dba_tab_privs。
eg:
SQL> conn system/manager
SQL> select distinct privilege from dba_tab_privs
eg:希望xiaoming使用者可以去查看scott的emp表(對象許可權)
sql>conn scott/sheng
sql>grant select on emp to xiaoming
希望xiaoming 使用者去修改scott 的emp表
SQL> grant update on emp to xiaoming
希望xiaoming 使用者去所有許可權scott 的emp表
SQL> grant all on emp to xiaoming
授予對象許可權傳遞:
如果是對象許可權,就加入with grant option
grant select on emp to xiaoming with grant option //意味著xiaoming可以傳遞許可權
回收許可權revoke
scott 希望收回xiaoming對emp表的查詢許可權
revoke select on emp from xiaoming