Oracle 原理:用戶和權限,Profile,系統權限,對象權限,角色

目錄

1.用戶的創建

2.用 Profile(概要文件) 管理用戶:

3.系統權限

4.對象權限

5.角色管理


----------------------------------------------分割線---------------------------------------------------------

 

1.用戶的創建

      在Oracle中默認有3個用戶:SYS,SYSTEM,SCOTT

      其中數據庫所有的數據字典表和視圖都存儲在SYS模式中,相當於Linux下的root用戶。模式和用戶可以認爲是同一個概念。

      SYSTEM是默認的系統管理員,可以管理表和視圖、用戶、權限等

      SCOOT是默認的普通用戶,以Oracle公司的第一個普通員工命名的,默認密碼是tiger,剛開始這個用戶是被鎖住的,無法用該用戶登錄。

剛開始都是以SYS或者SYSTEM登錄。來創建普通用戶:

drop user voapd;
create user voapd identified by voapd;
--create user [用戶名] identified by [密碼] Default tablespace [默認表空間名] Temporary tablespace [臨時表空間名]

創建完後可嘗試登錄新創建的用戶:

發現剛創建的用戶沒有創建會話的權限,需要被授予相應的權限。授予voapd創建會話權限和解除scott鎖定:

revoke CREATE SESSION  from voapd;
grant CREATE SESSION to voapd with admin option;
--GRANT [權限] TO [用戶] [WITH ADMIN OPTION]
alter user scott account unlock;

之後就可以登錄voapd用戶 和scott用戶了,第一次登錄scott用戶,會叫你重置密碼。with admin option 表示被授予系統權限的用戶,可以繼續有權利授予其他用戶相應的權限。

2.用 Profile(概要文件) 管理用戶:

 Profile文件裏包含了16個用於管理用戶的規則和值,包含了"登錄幾次失敗就會把用戶給鎖定","鎖定的天數爲多少天",像這樣的參數信息。每個用戶都會關聯一個Profile文件,然後用戶就會遵循Profile裏的規則。當沒有指定的Profile或者指定的Profile文件被刪除時,用戶關聯的默認概要文件就爲DEFAULT。 

select * from dba_profiles 可以查看profile信息。 dba_users可以查看用戶信息,裏面可以找到用戶關聯的Profile文件。(UNLIMITED指無窮大)

PROFILE參數解釋如下:

COMPOSITE_LIMIT 指定一個會話的總的資源消耗,以service units單位表示。Oracle數據庫以有利的方式計算
PASSWORD_LOCK_TIME 指定登陸嘗試失敗次數到達後帳戶的鎖定時間,以天爲單位。
PASSWORD_VERIFY_FUNCTION 密碼驗證腳本.
PASSWORD_REUSE_MAX 允許使用歷史密碼作爲新密碼的間隔次數
PASSWORD_REUSE_TIME 允許使用歷史密碼作爲新密碼的間隔天數
PASSWORD_LIFE_TIME 指定同一密碼所允許使用的天數
FAILED_LOGIN_ATTEMPTS 密碼登錄失敗次數,超過則鎖定用戶
PRIVATE_SGA SGA共享池可以給會話分配的最大字節
CONNECT_TIME 會話的總連接時間(分鐘)
IDLE_TIME 會話的連續不活動的時間。
LOGICAL_READS_PER_CALL 指定一次執行SQL(解析、執行和提取)調用所允許讀的數據塊的最大數目。
LOGICAL_READS_PER_SESSION 指定一個會話允許讀的數據塊的數目,包括從內存和磁盤讀的所有數據塊。
CPU_PER_CALL 指定一次調用(解析、執行和提取)的CPU時間限制,單位爲百分之一秒
CPU_PER_SESSION 指定會話的CPU時間限制,單位爲百分之一秒
SESSIONS_PER_USER 指定限制用戶的併發會話的數目。
PASSWORD_GRACE_TIME 密碼失效的寬限天數

創建Profile ,關聯profile 的示例: 讓用戶登錄3次失敗就永久鎖定,用戶的密碼有效期只有30天,寬限時間爲3天。


 

--drop profile testProfile CASCADE;
create profile testProfile limit 
failed_login_attempts 3
password_lock_time unlimited;
alter profile testProfile limit
PASSWORD_LIFE_TIME 30
PASSWORD_GRACE_TIME 3;
alter user voapd Profile testProfile;

然後登錄voapd,連續試錯3次密碼就真的永久鎖定了。登錄SYSTEM用戶,用alter user [用戶名] account unlock;解除鎖定。此外,必須沒有用戶關聯到這個profile時才能直接刪除,否則要加級聯CASCADE。級聯刪除prifile會把原來關聯到此profile用戶 關聯回默認的概要文件DEFAULT.

3.系統權限

 GRANT [權限] TO [用戶] [WITH ADMIN OPTION] ;

  revoke[權限]  from [用戶];


DBA: 擁有全部特權,是系統最高權限,只有DBA纔可以創建數據庫結構。
RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。
CONNECT:擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
對於普通用戶:授予connect, resource權限。
對於DBA管理用戶:授予connect,resource, dba權限。

另外還有   當權限名帶有 any時,表示該權限可以操作任意對象。例如 create table 是創建表的權限,create any table 則是擁有創建任意對象的表權限,假如A被授予了這個權限,那麼A也可以創建B中表的權限。

系統權限指允許用戶對數據庫進行哪些操作,可以 select  *  from system_privilege_map; 查詢系統權限有哪些。這裏抄這位仁兄的表格了https://blog.csdn.net/weixin_30847939/article/details/95212667?ops_request_misc=%7B%22request_id%22%3A%22158229177819195239837236%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158229177819195239837236&biz_id=0&utm_source=distribute.pc_search_result.none-task

類型/系統權限

說明

羣集權限

CREATE CLUSTER

在自己的方案中創建、更改和刪除羣集

CREATE ANY   CLUSTER

在任何方案中創建羣集

ALTER ANY   CLUSTER

在任何方案中更改羣集

DROP ANY   CLUSTER

在任何方案中刪除羣集

數據庫權限

ALTER DATABASE

運行ALTER DATABASE語句,更改數據庫的配置

ALTER SYSTEM

運行ALTER SYSTEM語句,更改系統的初始化參數

AUDIT SYSTEM

運行AUDIT SYSTEM和NOAUDIT SYSTEM語句,審計SQL

AUDIT ANY

運行AUDIT和NOAUDIT語句,對任何方案的對象進行審計

索引權限

CREATE ANY INDEX

在任何方案中創建索引

注意:沒有CREATE INDEX權限,CREATE TABLE權限包含了CREATE INDEX權限

ALTER ANY INDEX

在任何方案中更改索引

DROP ANY INDEX

任何方案中刪除索引

過程權限

CREATE PROCEDURE

在自己的方案中創建、更改或刪除過程、函數和包

CREATE ANY PROCEDURE

在任何方案中創建過程、函數和包

ALTER ANY PROCEDURE

在任何方案中更改過程、函數和包

DROP ANY PROCEDURE

在任何方案中刪除過程、函數或包

EXECUTE ANY PROCEDURE

在任何方案中執行或者引用過程

概要文件權限

CREATE PROFILE

創建概要文件

ALTER PROFILE

更改概要文件

DROP PROFILE

刪除概要文件

角色權限

CREATE ROLE

創建角色

ALTER ANY ROLE

更改任何角色

DROP ANY ROLE

刪除任何角色

GRANT ANY ROLE

向其他角色或用戶授予任何角色

注意:沒有對應的REVOKE ANY   ROLE權限

回退段權限

CREATE ROLLBACK SEGMENT

創建回退段

注意:沒有對撤銷段的權限

ALTER ROLLBACK SEGMENT

更改回退段

DROP ROLLBACK SEGMENT

刪除回退段

序列權限

CREATE SEQLENCE

在自己的方案中創建、更改、刪除和選擇序列

CREATE ANY SEQUENCE

在任何方案中創建序列

ALTER ANY SEQUENCE

在任何方案中更改序列

DROP ANY SEQUENCE

在任何方案中刪除序列

SELECT ANY SEQUENCE

在任何方案中從任何序列中進行選擇

會話權限

CREATE SESSION

創建會話,登錄進入(連接到)數據庫

ALTER SESSION

運行ALTER SESSION語句,更改會話的屬性

ALTER RESOURCE COST

更改概要文件中的計算資源消耗的方式

RESTRICTED SESSION

在數據庫處於受限會話模式下連接到數據

同義詞權限

CREATE SYNONYM

在自己的方案中創建、刪除同義詞

CREATE ANY SYNONYM

在任何方案中創建專用同義詞

CREATE PUBLIC SYNONYM

創建公共同義詞

DROP ANY SYNONYM

在任何方案中刪除同義詞

DROP PUBLIC SYNONYM

刪除公共同義詞

表權限

CREATE TABLE

在自己的方案中創建、更改和刪除表

CREATE ANY TABLE

在任何方案中創建表

ALTER ANY-TABLE

在任何方案中更改表

DROP ANY TABLE

在任何方案中刪除表

COMMENT ANY TABLE

在任何方案中爲任何表、視圖或者列添加註釋

SELECT ANY TABLE

在任何方案中選擇任何表中的記錄

INSERT ANY TABLE

在任何方案中向任何表插入新記錄

UPDATE ANY TABLE

在任何方案中更改任何表中的記錄

DELETE ANY TABLE

在任何方案中刪除任何表中的記錄

LOCK ANY TABLE

在任何方案中鎖定任何表

FLASHBACK ANY TABLE

允許使用AS OF子句對任何方案中的表、視圖執行一個SQL語句的閃回查詢

表空間權限

CREATE TABLESPACE

創建表空間

ALTER TABLESPACE

更改表空間

DROP TABLESPACE

刪除表空間,包括表、索引和表空間的羣集

MANAGE TABLESPACE

管理表空間,使表空間處於ONLINE(聯機)、OFFLINE(脫機)、BEGIN BACKUP(開始備份)、END BACKUP(結束備份)狀態

UNLIMITED TABLESPACE

不受配額限制地使用表空間

注意:只能將UNLIMITED   TABLESPACE授予賬戶而不能授予角色

用戶權限

CREATE USER

創建用戶

ALTER USER

更改用戶

BECOME USER

當執行完全裝入時,成爲另一個用戶

DROP USER

刪除用戶

視圖權限

CREATE VIEW

在自己的方案中創建、更改和刪除視圖

CREATE ANY VIEW

在任何方案中創建視圖

DROP ANY VIEW

在任何方案中刪除視圖

COMMENT ANY TABLE

在任何方案中爲任何表、視圖或者列添加註釋

FLASHBACK ANY TABLE

允許使用AS OF子句對任何方案中的表、視圖執行一個SQL語句的閃回查詢

觸發器權限

CREATE TRIGGER

在自己的方案中創建、更改和刪除觸發器

CREATE ANY TRIGGER

在任何方案中創建觸發器

ALTER ANY TRIGGER

在任何方案中更改觸發器

DROP ANY TRIGGER

在任何方案中刪除觸發器

ADMINISTER DATABASE TRIGGER

允許創建ON DATABASE觸發器。在能夠創建ON DATABASE觸發器之前,還必須先擁有CREATE TRIGGER或CREATE ANY   TRIGGER權限

專用權限

SYSOPER

(系統操作員權限)

STARTUP

SHUTDOWN

ALTER DATABASE   MOUNT/OPEN

ALTER DATABASE   BACKUP CONTROLFILE

ALTER DATABASE   BEGIN/END BACKUP

ALTER DATABASE   ARCHIVELOG

RECOVER   DATABASE

RESTRICTED   SESSION

CREATE SPFILE/PFILE

SYSDBA

(系統管理員權限)

SYSOPER的所有權限,並帶有WITH ADMIN   OPTION子句

CREATE   DATABASE

RECOVER DATABASE UNTIL

其他權限

ANALYZE ANY

對任何方案中的任何表、羣集或者索引執行ANALYZE語句

GRANT ANY OBJECT PRIVILEGE

授予任何方案上的任何對象上的對象權限

注意:沒有對應的REVOKE ANY   OBJECT PRIVILEGE

GRANT ANY PRIVILEGE

授予任何系統權限

注意:沒有對應的REVOKE ANY   PRIVILEGE

SELECT ANY DICTIONARY

允許從sys用戶所擁有的數據字典表中進行選擇

在Oracle9i以後,系統權限不會被級聯刪除。即用戶A把某權限用with admin option方式賦給了B,而B把此權限又賦給了用戶C,如果用戶A把用戶B的權限刪除,則C的權限依然存在。

4.對象權限

  GRANT [權限] ON [對象] TO [用戶] [WITH GRANT OPTION] ; revoke[權限]  on  [對象] from [用戶];

  對象權限和系統權限不一樣會被級聯刪除。指允許用戶可以對數據庫對象進行操作的權利(表、視圖、序列)。

 (這張表又是抄的。)

     

 對象權限    表     視圖   序列    過程
   修改(alter)                    √     √  
 刪除(delete)  √   √      
 執行(execute)       
 索引(index) √       
插入(insert)  √  √      
關聯(references)  √  √      
 選擇(select) √  √    
   更新(update)  √  √      

      grant  ALL on [對象] to [用戶A]; A則擁有上表打勾的對應一列的所有對象權限。

5.角色管理

   角色是權限的集合,可以把權限加入到角色中,再把角色和用戶關聯起來,那麼用戶就可以擁有角色中的權限。

  

DROP ROLE PROGRAMMER;            --PROGRAMMER 和 programmer 是同一個東西
CREATE ROLE programmer;
GRANT ALTER any table to programmer;
GRANT ALL ON salary_tbl TO programmer;
Grant programmer to voapd;
select * from  dba_sys_privs  where grantee ='PROGRAMMER';  ---系統權限表
select * from  dba_tab_privs  where grantee ='PROGRAMMER';  ---對象權限表

   注意:創建數據到系統表裏會自動轉換成大寫。

 

    

 

 

 

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