oracle 用戶權限操作sql

---用戶與權限管理----

--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中獲得--

 

Selectusername,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,CreateResource,Create View,Create User,Create Trigger,Create Tablespace,Createprocedure.

Alter Session,Database,User

--爲了使一個用戶可以操作數據庫,至少需要有create session,create table和有指定(表)空間配額的3個權限--

Grant Create Session,Create Table,UnlimitedTablespace To 用戶名;

--回收權限--

--注意:系統權限可以轉授,但是回收時不能間接回收--

Revoke 系統權限1,系統權限2 ...

From 用戶1,用戶2 ...

--對象權限    主要是對數據庫對象中的數據的訪問權限,這類權限主要針對普通用戶--

Grant 對象權限1(列名),對象權限2(列名)...

On 對象 To 用戶1,用戶2... With Grant Option

 

Grant Select On dept To user1 With GrantOption

Grant Insert(empno),Update(sal) On emp Touser1,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 Fromdba_sys_privs Where grantee='SCOTT'

----普通用戶通過user_sys_privs查詢      用戶直接獲得的系統權限,即通過grant命令授予當前用戶的系統權限---

Select username,Privilege,admin_option Fromuser_sys_privs

--從數據字典視圖session_privs中可以查詢一個用戶在當前會話中所具有的系統權限--

-- session_privs權限==直接獲得的權限 + 該用戶從角色中間接獲得的系統權限  ---

--對象權限有關的數據字典視圖:dba_tab_privs,dba_col_privs,user_tab_privs和user_col_privs--

點擊(此處)摺疊或打開

-- dba_tab_privs 查詢任何用戶所具有的對象權限 ---

Selectgrantee,Privilege,grantor,table_name,grantable From dba_tab_privs

Where grantee='USER1';

--dba_col_privs 查詢用戶在列上的權限 --

Selectgrantee,table_name,column_name,Privilege,grantor,grantable

From dba_col_privs Where grantee='USER1';

Selectgrantee,table_name,column_name,Privilege,grantor,grantable

From user_tab_privs Where grantee='SCOTT';

--角色--

--connect角色 包含的權限有createSession --

/* 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 Fromdba_role_privs Where grantee='user1'

--查詢角色connect所包含的系統權限--

 

Select Privilege,admin_option Fromrole_sys_privs Where Role='CONNECT'

--profile的管理--

--查詢用戶的會話信息,強制終止用戶會話,鎖定用戶帳號--

Select username,Sid,serial# From v$sessionWhere 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 Whereusername='SCOTT';

--數據字典dba_profiles--

Select resource_name,Limit Fromdba_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 LimitFailed_Login_Attempts 3 Password_Lock_Time 5

--用戶在30天內必須把口令修改過5次後,才能使用過去用過的口令--

 

Create Profile p2 Limit Password_Reuse_Time30 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 Fromdba_profiles Where Profile='DEFAULT';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章