Oracle11g 用戶與權限管理
---用戶與權限管理----
--1,用戶--
Create User 用戶名 Identified By "口令"
Default Tablespace 表空間
---指定默認表空間,若不指定,則SYSTEM表空間將被指定為用戶的默認表空間,為了提高數據庫的性能,同時為了方便管理數據,Oracle建議為用戶指定一個默認表空間---
Temporary Tablespace 臨時表空間
Quota 空間配額大小 On 表空間
Password Expire
Account Lock|Unlock
-
Create User user1 Identified By "1234"
-
Default Tablespace Users
-
Temporary Tablespace temp
-
Quota 20M On Users ---若希望用戶在所有表空間上都具有無限制的空間配額,則只要為其指定Unlimited tablespaces系統權限即可---
-
Password Expire
-
Account Unlock;
--刪除用戶--
Drop User 用戶名
--需要注意的是,如果一個用戶的模式中已經包含一些數據庫對象,那么這個用戶不能直接刪除,必須指定cascade--
Drop User scott Cascade;
--用戶的相關信息從數據字典視圖dba_users中獲得--
-
Select username,Password,default_tablespace,account_status From dba_users;
--修改用戶口令--
Password 用戶名 --若沒有指定用戶名,則默認為當前用戶--
Alter User 用戶 Identified By "新口令"
--alter也可以修改其它信息--
-
Alter User user1
-
Default Tablespace ts1
-
Temporary Tablespace ts1
-
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
-
Grant Select On dept To user1 With Grant Option
-
Grant Insert(empno),Update(sal) On emp To user1,user2
-
Grant Execute On functional To user1
--回收權限--
--權限insert,update,references在分配時可以指定相關的列,但在回收時不能指定列,而只能指定表名--
Revoke 對象權限1,對象權限2... On 對象
From 用戶1,用戶2...
-
Revoke Update(sal) On emp From user2 --錯誤語句--
-
Revoke Update On emp From user2
--數據庫中所有的系統權限--
-
Select Name From system_privilege_map;
--sys從數據字典視圖dba_sys_privs中查詢任何用戶所具有的系統權限--
-
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--
-
-- dba_tab_privs 查詢任何用戶所具有的對象權限 ---
-
Select grantee,Privilege,grantor,table_name,grantable From dba_tab_privs
-
Where grantee='USER1';
-
--dba_col_privs 查詢用戶在列上的權限 --
-
Select grantee,table_name,column_name,Privilege,grantor,grantable
-
From dba_col_privs Where grantee='USER1';
-
Select grantee,table_name,column_name,Privilege,grantor,grantable
-
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 記錄當前會話中所使用的角色 */
--獲得系統中所有的角色--
-
Select Role From dba_roles
--查詢用戶user1所擁有的角色和默認角色--
-
Select granted_role,default_role From dba_role_privs Where grantee='user1'
--查詢角色connect所包含的系統權限--
-
Select Privilege,admin_option From role_sys_privs Where Role='CONNECT'
--profile的管理--
-
--查詢用戶的會話信息,強制終止用戶會話,鎖定用戶帳號--
-
Select username,Sid,serial# From v$session Where username='SCOTT';
-
Alter System Kill Session '144,7'; --144和7分別為用戶會話的sid和serial#--
-
Alter User scott Account Lock;
--profile創建--
Create Profile profile名稱 Limit
口令限制
資源限制
--指定profile 每個用戶只能指定一個profile--
-
Create User user2 Identified By "1234" Profile p1
-
Alter User scott Profile p1
--從數據字典dba_users中可以獲得為每個用戶指定的profile-
-
Select Profile From dba_users Where username='SCOTT';
-
--數據字典dba_profiles--
-
Select resource_name,Limit From dba_profiles Where Profile='P1';
-
--刪除profile--
-
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天--
-
Create Profile p1 Limit Failed_Login_Attempts 3 Password_Lock_Time 5
--用戶在30天內必須把口令修改過5次后,才能使用過去用過的口令--
-
Create Profile p2 Limit Password_Reuse_Time 30 Password_Reuse_Max 5
--利用profile對用戶使用資源進行控制--
如果要使profile對用戶使用系統資源起限制作用,則需要將參數Resource_limit的值設置為True
-
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時間、訪問數據塊的數量等這些資源進行限制,那么就可以有效地
防止諸如死循環的執行、訪問一個大表中的所有數據這類情況的發生。
-
Create Profile p3 Limit
-
Sessions_Per_User 100
-
Logical_Reads_Per_Session 500
-
Connect_Time 5
-
Create Profile p4 Limit
-
Cpu_Per_Call 10
-
Logical_Reads_Per_Call 50
/* 若沒有為用戶指定profile文件,則用戶會受默認profile限制,如果要對所有用戶進行同樣的限制,那么只要修改
這個默認profile所包含的限制,并且不要為用戶指定其他的profile */
-
Select resource_name,Limit From dba_profiles Where Profile='DEFAULT';