oracle入坑日記<三>用戶詳解(角色理解)

1
 
用戶是什麼

1.一、權限管理是Oracle的精華,不一樣用戶登陸到同一數據庫中,可能看到不一樣數量的表,擁有不一樣的權限。Oracle 的權限分爲系統權限和數據對象權限,共一百多種。若是把Oracle數據庫看作倉庫,表空間至關於倉庫中的庫房,數據表就是存放在倉庫庫房中的貨品。用戶至關於倉庫管理員,倉庫管理員能夠管理一個或多個倉庫庫房,但倉庫管理員只屬於一個倉庫。(做爲SqlServer用戶,表空間相似SqlServer中的數據庫,sys/system用戶相似SqlServer中的sa用戶html

1.二、Oracle默認有三個用戶system 、 sys 、 scott。sys和system屬於系統管理員用戶,也是Oracle中權限很高的用戶(sys權限要更高於system),scott是默認普通用戶,scott的默認密碼是tigersql

1.三、Oracle關於用戶常見問題;數據庫

  1.3.一、sys不能用normal權限登陸,僅能用sysdbasysoper權限登陸。oracle

  

  1.3.二、system不能用sysoper權限登陸,僅能用normalsysdba權限登陸。ide

  

  1.3.三、scott用戶默認是鎖定的,須要解鎖才能使用。(scott默認密碼是tiger,解鎖後可自行修改密碼flex

  

  1.3.四、解鎖scott用戶,登陸sqlplus(normal權限登陸便可)後用  alter user scott account unlock;  語句解鎖(注意最後有分號結尾)spa

  

  激活scott用戶後,首次登陸會提示要求修改密碼,默認密碼 tiger 不能使用scott3d

  

2
 
用戶鏈接方式(用戶身份)

2.一、使用 PL/SQL 會發現登陸的時候【鏈接爲】有三個選項:Normal、SYSDBA、SYSOPER。這是用戶選擇以什麼身份對數據庫進行操做,能夠看作一個倉庫管理員以什麼職位對倉庫貨品進行管理。code

2.二、一個用戶能夠有多個身份,就比如在一家公司一我的能夠身兼數職,而登陸數據庫時選擇的 Normal、SYSDBA、SYSOPER 就是選擇以什麼職位對數據庫進行操做。orm

2.三、以前提到,Oracle默認用戶SYS能夠用 SYSDBASYSOPER鏈接,用戶SYSTEM能夠用SYSDBANormal鏈接,用戶scott僅能用Normal鏈接;身份和角色是多對多的關係,

2.四、三種身份權限,詳見下表

其中SYS用戶擁有最高權限,SYS 是全部內部數據庫表、結構、過程包、等擁有者,此外它還擁有 V$ 和數據字典視圖,並建立全部封裝的數據庫角色(DBA,CONNECT,RESOURCE)。 SYS是一個惟一能訪問特定內部數據字典的用戶。

做爲通常開發人員通常用Normal身份鏈接數據便可。

3
 
建立/刪除/修改用戶

3.一、建立用戶  create user [username] identified by [password];  

3.二、修改用戶密碼  alter user [username] identified by [password]; 

3.三、修改用戶狀態(解鎖或鎖定),Oracle用戶有兩種狀態 lock(鎖定)unlock(解鎖)  alter user [username] account [lock/unlock]; 

3.四、刪除用戶  drop user [username]; 

4
 
權限和角色

4.一、 權限就是在數據庫中執行一些操做的權利,好比,登陸數據庫,鏈接數據庫,建立數據表等。角色是權限的集合,好比,角色A同時擁有登陸數據庫,建立數據表的權限。舉例,拿狼人殺來理解權限和角色的關係,把狼人殺中的行動拆分爲權限大概有,天黑睜眼[權限]、查驗身份[權限]、使用毒/解藥[權限]、投票[權限]等,這些看作Oracle數據庫中的權限;你們都知道狼人殺中普通村民晚上是要閉眼的,而特殊身份晚上有睜眼[權限],其中女巫[角色]擁有天黑睜眼[權限]和使用毒/解藥[權限]還有投票[權限],那這三個[權限]的集合就是女巫[角色]

  4.1.一、Oracle的權限分爲系統權限對象權限;系統權限就是用戶對整個數據庫的範圍內的操做權限,好比經常使用的建表,鏈接,建視圖等權限,對象權限就是受權其餘方案對象用戶對本身方案對象的操做權限,好比經常使用增刪改查操做。對象權限的通俗理解,把本身的數據庫方案(本身的數據表)共享給其餘用戶操做使用的權限。

4.二、系統權限介紹、受權、回收

  4.2.一、系統權限是指執行特定類型sql命令的權利。它用於控制用戶能夠執行的一個或是一組數據庫操做。經常使用系統權限有:

  

  4.2.二、查看當前Oracle版本的全部系統權限  select * from system_privilege_map order by name; (我目前安裝的Oracle11g有208個系統權限

  

  4.2.三、給用戶受權角色(或權限) grant [RoleName]|[PowerName] to [UserName];

   

  (給用戶【a_user】受權【創建數據庫鏈接】和【建立數據表】權限

  4.2.四、回收權限  revoke [RoleName]|[PowerName] from [UserName];

   

4.三、對象權限介紹、受權、回收

  4.3.一、對象權限指訪問其它方案對象的權利,用戶能夠直接訪問本身方案的對象,可是若是要訪問別的方案的對象,則必須具備對象的權限。經常使用對象權限:

  

  4.3.二、給用戶受權角色(或權限)  grant [PowerName]|[RoleName] on [b_UserName].[TableName] to [a_UserName];

   

  受權用戶 a_user 對 用戶 b_user 下的 t_couse 表 [增、刪、改、查] 權限

  4.3.三、回收權限  revoke [PowerName]|[RoleName] on [b_UserName].[TableName] from [a_UserName];

   

  撤銷用戶 a_user 對 用戶 b_user 下的 t_couse 表 [增、刪、改、查] 權限

4.四、角色(權限集合)

  4.4.一、在對用戶受權的時候會遇到多個權限須要受權給多個用戶的狀況。一個個權限分別受權給一個個用戶顯然效率很低,這種場景就須要用到角色。前面有說到,角色就會權限的集合。

  4.4.二、預約義角色,Oracle已經提供了一些預約義角色,經常使用到的有 connect,resource,dba 三種角色;

    4.4.2.一、connect角色:具備通常應用開發人員須要的大部分權限,當創建了一個用戶後,多數狀況下,只要給用戶授予connect和resource角色就夠了;

    4.4.2.二、resource角色具備應用開發人員所須要的其它權限,好比創建存儲過程,觸發器等;

    4.4.2.三、dba角色具備全部的系統權限,及with admin option選項,默認的dba用戶爲sys和system,它們能夠將任何系統權限授予其餘用戶。可是要注意的是dba角色不具有sysdba和sysoper的特權(啓動和關閉數據庫);

4.4.三、建立角色,除了Oracle提供的預約義角色,咱們也能夠本身建立角色 

create role [RoleName] not identified;
 -- 不驗證方式建立角色(沒有密碼驗證)
 
 create role [Role] identified by [password];
 -- 驗證方式建立角色(激活角色時須要驗證密碼)

4.4.四、給角色受權,自定義建立的角色默認沒有任何權限,建立角色後須要分配權限 (注意:分配系統權限時建議使用 system用戶

conn system/[password]; 
--鏈接system用戶
grant [PowerName] to [RoleName] with admin option;
--受權系統權限
conn scott/tiger@myoral;
--鏈接對象用戶
grant [PowerName] on scott.emp to [RoleName];
--受權對象權限

4.4.五、刪除角色  drop role [RoleName];

引用資料:http://www.javashuo.com/article/p-qqfswfdn-cm.html

<<============================================================================================================================================>>

此日記系列僅作普通開發使用Oracle,並不是專業DBA
相關文章
相關標籤/搜索