Oracle11g 使用者與許可權管理

bitifi發表於2015-09-22
---使用者與許可權管理----
--1,使用者--
Create User 使用者名稱 Identified By "口令"
Default Tablespace 表空間      
---指定預設表空間,若不指定,則SYSTEM表空間將被指定為使用者的預設表空間,為了提高資料庫的效能,同時為了方便管理資料,Oracle建議為使用者指定一個預設表空間---
Temporary Tablespace 臨時表空間    
Quota 空間配額大小 On 表空間  
Password Expire
Account Lock|Unlock

點選(此處)摺疊或開啟

  1. Create User user1 Identified By "1234"
  2. Default Tablespace Users
  3. Temporary Tablespace temp
  4. Quota 20M On Users ---若希望使用者在所有表空間上都具有無限制的空間配額,則只要為其指定Unlimited tablespaces系統許可權即可---
  5. Password Expire
  6. Account Unlock;
--刪除使用者--
Drop User 使用者名稱
--需要注意的是,如果一個使用者的模式中已經包含一些資料庫物件,那麼這個使用者不能直接刪除,必須指定cascade--
Drop User scott Cascade;
--使用者的相關資訊從資料字典檢視dba_users中獲得--

  1. Select username,Password,default_tablespace,account_status From dba_users;
--修改使用者口令--
Password 使用者名稱   --若沒有指定使用者名稱,則預設為當前使用者--
Alter User 使用者 Identified By "新口令"
--alter也可以修改其它資訊--

  1. Alter User user1
  2. Default Tablespace ts1
  3. Temporary Tablespace ts1
  4. Quota Unlimited On ts1;
--系統許可權的管理--
--為使用者授予許可權的grant命令語法--
Grant 許可權1,許可權2,... To 使用者1,使用者2,... With Admin Option;   --with admin option的好處是許可權的獲得者可以再將許可權授予其他使用者--
---許可權包括系統許可權和物件許可權--
--系統許可權--
Create Session,Create Table,Create Resource,Create View,Create User,Create Trigger,Create Tablespace,Create procedure.
Alter Session,Database,User
--為了使一個使用者可以運算元據庫,至少需要有create session,create table和有指定(表)空間配額的3個許可權--
Grant Create Session,Create Table,Unlimited Tablespace To 使用者名稱;
--回收許可權--
--注意:系統許可權可以轉授,但是回收時不能間接回收--
Revoke 系統許可權1,系統許可權2 ...
From 使用者1,使用者2 ...
--物件許可權    主要是對資料庫物件中的資料的訪問許可權,這類許可權主要針對普通使用者--
Grant 物件許可權1(列名),物件許可權2(列名)...
On 物件 To 使用者1,使用者2... With Grant Option

  1. Grant Select On dept To user1 With Grant Option
  2. Grant Insert(empno),Update(sal) On emp To user1,user2
  3. Grant Execute On functional To user1
--回收許可權--
--許可權insert,update,references在分配時可以指定相關的列,但在回收時不能指定列,而只能指定表名--
Revoke 物件許可權1,物件許可權2... On 物件
From 使用者1,使用者2...

  1. Revoke Update(sal) On emp From user2 --錯誤語句--
  2. Revoke Update On emp From user2      
--資料庫中所有的系統許可權--
  1. Select Name From system_privilege_map;
--sys從資料字典檢視dba_sys_privs中查詢任何使用者所具有的系統許可權--

  1. Select grantee,Privilege,admin_option From dba_sys_privs Where grantee='SCOTT'
----普通使用者透過user_sys_privs查詢      使用者直接獲得的系統許可權,即透過grant命令授予當前使用者的系統許可權---
Select username,Privilege,admin_option From user_sys_privs
--從資料字典檢視session_privs中可以查詢一個使用者在當前會話中所具有的系統許可權--
-- session_privs許可權==直接獲得的許可權 + 該使用者從角色中間接獲得的系統許可權  ---
--物件許可權有關的資料字典檢視:dba_tab_privs,dba_col_privs,user_tab_privs和user_col_privs--

點選(此處)摺疊或開啟

  1. -- dba_tab_privs 查詢任何使用者所具有的物件許可權 ---
  2. Select grantee,Privilege,grantor,table_name,grantable From dba_tab_privs
  3. Where grantee='USER1';
  4. --dba_col_privs 查詢使用者在列上的許可權 --
  5. Select grantee,table_name,column_name,Privilege,grantor,grantable
  6. From dba_col_privs Where grantee='USER1';
  1. Select grantee,table_name,column_name,Privilege,grantor,grantable
  2. From user_tab_privs Where grantee='SCOTT';
--角色--
--connect角色 包含的許可權有create Session --
/* resource角色 包含的許可權有 crate sequence,create trigger,create cluster,create procedure,
create type,create operator,create table ,create indextype */
Create Role 角色名
Drop Role 角色名
Grant Select On emp To role1
Revoke Select On emp From role1
--角色資訊的查詢--
/*  dba_roles            記錄資料庫中所有角色
dba_role_privs          記錄所有被授予使用者或另一角色的角色
user_role_privs         記錄所有被授予當前使用者的角色
role_role_privs         記錄一個角色中包含的其他角色
role_sys_privs          記錄一個角色中包含的系統許可權
role_tab_privs          記錄一個角色中包含的物件許可權
session_roles           記錄當前會話中所使用的角色   */
--獲得系統中所有的角色--

  1. Select Role From dba_roles
--查詢使用者user1所擁有的角色和預設角色--

  1. Select granted_role,default_role From dba_role_privs Where grantee='user1'
--查詢角色connect所包含的系統許可權--

  1. Select Privilege,admin_option From role_sys_privs Where Role='CONNECT'
--profile的管理--
  1. --查詢使用者的會話資訊,強制終止使用者會話,鎖定使用者帳號--
  2. Select username,Sid,serial# From v$session Where username='SCOTT';
  3. Alter System Kill Session '144,7'; --144和7分別為使用者會話的sid和serial#--
  4. Alter User scott Account Lock;
--profile建立--
Create Profile profile名稱 Limit
口令限制
資源限制
--指定profile    每個使用者只能指定一個profile--

  1. Create User user2 Identified By "1234" Profile p1
  2. Alter User scott Profile p1
--從資料字典dba_users中可以獲得為每個使用者指定的profile-
  1. Select Profile From dba_users Where username='SCOTT';
  2. --資料字典dba_profiles--
  3. Select resource_name,Limit From dba_profiles Where Profile='P1';
  4. --刪除profile--
  5. Drop Profile profile名字 [Cascade];
--Profile限制--
/* Failed_Login_Attempts        允許的失敗登入次數,預設值為10次
Password_Lock_Time     賬號鎖定時間,預設值為1天
Password_Life_Time 口令的有效期,預設值為180天
Password_Grace_Time 口令有效期的延長期,預設值為-周、7天
Password_Reuse_Time 為了再次使用過去用過的口令,必須經過的天數
Password_Reuse_Max 為了再次使用過去用過的口令,必須使用不同口令的次數
Password_Reuse_Time 和 Password_Reuse_Max 必須一起使用  */
--如果使用者失敗的登入次數達到3次,則使用者賬號將被鎖定5天--

  1. Create Profile p1 Limit Failed_Login_Attempts 3 Password_Lock_Time 5
--使用者在30天內必須把口令修改過5次後,才能使用過去用過的口令--

  1. Create Profile p2 Limit Password_Reuse_Time 30 Password_Reuse_Max 5
--利用profile對使用者使用資源進行控制--
如果要使profile對使用者使用系統資源起限制作用,則需要將引數Resource_limit的值設定為True

  1. Alter System Set resource_limit=True
Sessions_Per_User       一個使用者所允許的併發會話數目
Cpu_Per_Session   使用者在一個會話內所使用的Cpu時間的總和,時間單位為0.01秒
Logical_Reads_Per_Session 使用者在一個會話內所能訪問的資料塊的數量(包括物理讀和邏輯讀的數量)
Connect_Time 一個使用者會話所能持續的時間,以分鐘為單位;超過這個時間,會話將自動斷開
Idle_Time 一個使用者會話所允許的連續的空閒時間,以分鐘為單位,超過這個時間,會話將自動斷開
Private_Sga 如果資料庫伺服器的連線模式為共享模式,這個引數用來限制為一個使用者會話所分配的Sga空間
Cpu_Per_Call 使用者執行的每條命令所使用的Cpu時間,時間單位為0.01秒
Logical_Reads_Per_Call 使用者執行的每條命令所能訪問的資料塊的數量
如果能夠對使用者消耗Cpu時間、訪問資料塊的數量等這些資源進行限制,那麼就可以有效地
防止諸如死迴圈的執行、訪問一個大表中的所有資料這類情況的發生。
  1. Create Profile p3 Limit
  2. Sessions_Per_User 100
  3. Logical_Reads_Per_Session 500
  4. Connect_Time 5
  1. Create Profile p4 Limit
  2. Cpu_Per_Call 10
  3. Logical_Reads_Per_Call 50
/* 若沒有為使用者指定profile檔案,則使用者會受預設profile限制,如果要對所有使用者進行同樣的限制,那麼只要修改
這個預設profile所包含的限制,並且不要為使用者指定其他的profile */

  1. Select resource_name,Limit From dba_profiles Where Profile='DEFAULT';

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1805933/,如需轉載,請註明出處,否則將追究法律責任。

相關文章