天天看點

Oracle使用者、權限及角色管理

1.Oracle使用者

Oracle使用者,既可以登入Oracle資料庫,對資料庫進行增删改查等操作的使用者。主要有四種使用者:

      超級管理者,如SYS;

      普通管理者,如SYSTEM;

      普通使用者,如SCOTT;

      大資料使用者;

1.1.建立使用者:

--文法[建立使用者]:
create user 使用者名 identified by 密碼[即密碼];
--例子:
create user test identified by test;

--文法[更改使用者]: 
alter user 使用者名 identified by 密碼[改變的密碼];
--例子:
alter user test identified by 123456
           

1.2.删除使用者

 若使用者擁有對象,則不能直接删除,否則将傳回一個錯誤值。此時可使用指定關鍵字cascade,可删除使用者所有的對象,然後再删除使用者。

--文法:
drop user 使用者名;
--例子:
drop user test;

--文法: 
drop user 使用者名 cascade;
--例子: 
drop user test cascade;
           

使用者建立後不能直接登入資料庫及對資料庫進行操作,需要賦予使用者一定的權限才可以進行相應的操作。

2.Oracle權限

權限分為兩類:

系統權限: 允許使用者執行特定的資料庫動作,如建立表、建立索引、連接配接執行個體等

對象權限: 允許使用者操縱一些特定的對象,如讀取視圖,可更新某些列、執行存儲過程等

--查詢系統所有的權限:
SELECT * FROM SYSTEM_PRIVILEGE_MAP;
--查詢使用者擁有的系統權限:
SELECT * FROM USER_SYS_PRIVS
           

資料庫管理者具有進階權限以完成管理任務,如建立新使用者、删除使用者、删除表、備份表等.

建立Oracle使用者後需要進行相應權限的賦予,相應語句為:

--(1)授權指令
--文法: 
grant connect, resource to 使用者名;
--例子: 
grant connect, resource to test;

--(2)撤銷權限
--文法: 
revoke connect, resource from 使用者名;
--列子:
revoke connect, resource from test
           

3.Oracle角色

由于Oracle提供的權限非常之多,日常操作時我們不可能将所需權限一一賦予使用者,此時引進角色概念。角色是一組相關權限的命名集合,使用角色最主要的目的是簡化權限管理。将一組權限打包到角色中,賦權時可直接将角色賦予使用者,代表将角色下得所有權限都賦予了使用者,簡化了賦權操作;Oracle提供三種标準的三種角色.

1)  connect role(連接配接角色)

      臨時使用者,特指不需要建表的使用者,通常隻賦予他們connect role. connect是使用oracle簡單權限,這種權限隻對其他使用者的表有通路權限,包括select/insert/update和delete等。

      擁有connect role 的使用者還能夠建立表、視圖、序列(sequence)、簇(cluster)、同義詞(synonym)、回話(session)和其他  資料的鍊(link)

2)  resource role(資源角色)

      更可靠和正式的資料庫使用者可以授予resource role。resource提供給使用者另外的權限以建立他們自己的表、序列、過程(procedure)、觸發器(trigger)、索引(index)和簇(cluster)。

3)  dba role(資料庫管理者角色)

      dba role擁有所有的系統權限.包括無限制的空間限額和給其他使用者授予各種權限的能力。system由dba使用者擁有

除了前面講到的三種系統角色外,使用者可以在Oracle建立自己的角色

--1)建立角色
--文法: 
create role 角色名;
--例子: 
create role testRole;

--2)授權角色
--文法: 
grant select on class(表名) to 角色名;
--例子: 
grant select on class to testRole;

--3)删除角色
--文法: 
drop role 角色名;
--例子: 
drop role testRole
           

注:賦權後,擁有testRole角色的所有使用者都具有對class表的select查詢權限;删除後與testRole角色相關的權限将從資料庫全部删除.