Oracle 原理:用户和权限,Profile,系统权限,对象权限,角色
目錄
1.用戶的創(chuàng)建
2.用 Profile(概要文件)?管理用戶:
3.系統(tǒng)權(quán)限
4.對象權(quán)限
5.角色管理
----------------------------------------------分割線---------------------------------------------------------
?
1.用戶的創(chuàng)建
? ? ? 在Oracle中默認(rèn)有3個用戶:SYS,SYSTEM,SCOTT
? ? ? 其中數(shù)據(jù)庫所有的數(shù)據(jù)字典表和視圖都存儲在SYS模式中,相當(dāng)于Linux下的root用戶。模式和用戶可以認(rèn)為是同一個概念。
? ? ? SYSTEM是默認(rèn)的系統(tǒng)管理員,可以管理表和視圖、用戶、權(quán)限等
? ? ? SCOOT是默認(rèn)的普通用戶,以O(shè)racle公司的第一個普通員工命名的,默認(rèn)密碼是tiger,剛開始這個用戶是被鎖住的,無法用該用戶登錄。
剛開始都是以SYS或者SYSTEM登錄。來創(chuàng)建普通用戶:
drop user voapd; create user voapd identified by voapd; --create user [用戶名] identified by [密碼] Default tablespace [默認(rèn)表空間名] Temporary tablespace [臨時表空間名]創(chuàng)建完后可嘗試登錄新創(chuàng)建的用戶:
發(fā)現(xiàn)剛創(chuàng)建的用戶沒有創(chuàng)建會話的權(quán)限,需要被授予相應(yīng)的權(quán)限。授予voapd創(chuàng)建會話權(quán)限和解除scott鎖定:
revoke CREATE SESSION from voapd; grant CREATE SESSION to voapd with admin option; --GRANT [權(quán)限] TO [用戶] [WITH ADMIN OPTION] alter user scott account unlock;之后就可以登錄voapd用戶 和scott用戶了,第一次登錄scott用戶,會叫你重置密碼。with admin option 表示被授予系統(tǒng)權(quán)限的用戶,可以繼續(xù)有權(quán)利授予其他用戶相應(yīng)的權(quán)限。
2.用 Profile(概要文件)?管理用戶:
?Profile文件里包含了16個用于管理用戶的規(guī)則和值,包含了"登錄幾次失敗就會把用戶給鎖定","鎖定的天數(shù)為多少天",像這樣的參數(shù)信息。每個用戶都會關(guān)聯(lián)一個Profile文件,然后用戶就會遵循Profile里的規(guī)則。當(dāng)沒有指定的Profile或者指定的Profile文件被刪除時,用戶關(guān)聯(lián)的默認(rèn)概要文件就為DEFAULT。?
select * from?dba_profiles 可以查看profile信息。 dba_users可以查看用戶信息,里面可以找到用戶關(guān)聯(lián)的Profile文件。(UNLIMITED指無窮大)
PROFILE參數(shù)解釋如下:
| COMPOSITE_LIMIT | 指定一個會話的總的資源消耗,以service units單位表示。Oracle數(shù)據(jù)庫以有利的方式計算 |
| PASSWORD_LOCK_TIME | 指定登陸嘗試失敗次數(shù)到達后帳戶的鎖定時間,以天為單位。 |
| PASSWORD_VERIFY_FUNCTION | 密碼驗證腳本. |
| PASSWORD_REUSE_MAX | 允許使用歷史密碼作為新密碼的間隔次數(shù) |
| PASSWORD_REUSE_TIME | 允許使用歷史密碼作為新密碼的間隔天數(shù) |
| PASSWORD_LIFE_TIME | 指定同一密碼所允許使用的天數(shù) |
| FAILED_LOGIN_ATTEMPTS | 密碼登錄失敗次數(shù),超過則鎖定用戶 |
| PRIVATE_SGA | SGA共享池可以給會話分配的最大字節(jié) |
| CONNECT_TIME | 會話的總連接時間(分鐘) |
| IDLE_TIME | 會話的連續(xù)不活動的時間。 |
| LOGICAL_READS_PER_CALL | 指定一次執(zhí)行SQL(解析、執(zhí)行和提取)調(diào)用所允許讀的數(shù)據(jù)塊的最大數(shù)目。 |
| LOGICAL_READS_PER_SESSION | 指定一個會話允許讀的數(shù)據(jù)塊的數(shù)目,包括從內(nèi)存和磁盤讀的所有數(shù)據(jù)塊。 |
| CPU_PER_CALL | 指定一次調(diào)用(解析、執(zhí)行和提取)的CPU時間限制,單位為百分之一秒 |
| CPU_PER_SESSION | 指定會話的CPU時間限制,單位為百分之一秒 |
| SESSIONS_PER_USER | 指定限制用戶的并發(fā)會話的數(shù)目。 |
| PASSWORD_GRACE_TIME | 密碼失效的寬限天數(shù) |
創(chuàng)建Profile ,關(guān)聯(lián)profile 的示例: 讓用戶登錄3次失敗就永久鎖定,用戶的密碼有效期只有30天,寬限時間為3天。
?
然后登錄voapd,連續(xù)試錯3次密碼就真的永久鎖定了。登錄SYSTEM用戶,用alter user [用戶名] account unlock;解除鎖定。此外,必須沒有用戶關(guān)聯(lián)到這個profile時才能直接刪除,否則要加級聯(lián)CASCADE。級聯(lián)刪除prifile會把原來關(guān)聯(lián)到此profile用戶 關(guān)聯(lián)回默認(rèn)的概要文件DEFAULT.
3.系統(tǒng)權(quán)限
?GRANT [權(quán)限] TO [用戶] [WITH ADMIN OPTION] ;
? revoke[權(quán)限] ?from [用戶];
DBA: 擁有全部特權(quán),是系統(tǒng)最高權(quán)限,只有DBA才可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。
RESOURCE:擁有Resource權(quán)限的用戶只可以創(chuàng)建實體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。
CONNECT:擁有Connect權(quán)限的用戶只可以登錄Oracle,不可以創(chuàng)建實體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。
對于普通用戶:授予connect, resource權(quán)限。
對于DBA管理用戶:授予connect,resource, dba權(quán)限。
另外還有? ?當(dāng)權(quán)限名帶有 any時,表示該權(quán)限可以操作任意對象。例如 create table 是創(chuàng)建表的權(quán)限,create any table 則是擁有創(chuàng)建任意對象的表權(quán)限,假如A被授予了這個權(quán)限,那么A也可以創(chuàng)建B中表的權(quán)限。
系統(tǒng)權(quán)限指允許用戶對數(shù)據(jù)庫進行哪些操作,可以?select ?* ?from system_privilege_map; 查詢系統(tǒng)權(quán)限有哪些。這里抄這位仁兄的表格了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
| 類型/系統(tǒng)權(quán)限 | 說明 |
| 群集權(quán)限 | |
| CREATE CLUSTER | 在自己的方案中創(chuàng)建、更改和刪除群集 |
| CREATE ANY ? CLUSTER | 在任何方案中創(chuàng)建群集 |
| ALTER ANY ? CLUSTER | 在任何方案中更改群集 |
| DROP ANY ? CLUSTER | 在任何方案中刪除群集 |
| 數(shù)據(jù)庫權(quán)限 | |
| ALTER DATABASE | 運行ALTER DATABASE語句,更改數(shù)據(jù)庫的配置 |
| ALTER SYSTEM | 運行ALTER SYSTEM語句,更改系統(tǒng)的初始化參數(shù) |
| AUDIT SYSTEM | 運行AUDIT SYSTEM和NOAUDIT SYSTEM語句,審計SQL |
| AUDIT ANY | 運行AUDIT和NOAUDIT語句,對任何方案的對象進行審計 |
| 索引權(quán)限 | |
| CREATE ANY INDEX | 在任何方案中創(chuàng)建索引 注意:沒有CREATE INDEX權(quán)限,CREATE TABLE權(quán)限包含了CREATE INDEX權(quán)限 |
| ALTER ANY INDEX | 在任何方案中更改索引 |
| DROP ANY INDEX | 任何方案中刪除索引 |
| 過程權(quán)限 | |
| CREATE PROCEDURE | 在自己的方案中創(chuàng)建、更改或刪除過程、函數(shù)和包 |
| CREATE ANY PROCEDURE | 在任何方案中創(chuàng)建過程、函數(shù)和包 |
| ALTER ANY PROCEDURE | 在任何方案中更改過程、函數(shù)和包 |
| DROP ANY PROCEDURE | 在任何方案中刪除過程、函數(shù)或包 |
| EXECUTE ANY PROCEDURE | 在任何方案中執(zhí)行或者引用過程 |
| 概要文件權(quán)限 | |
| CREATE PROFILE | 創(chuàng)建概要文件 |
| ALTER PROFILE | 更改概要文件 |
| DROP PROFILE | 刪除概要文件 |
| 角色權(quán)限 | |
| CREATE ROLE | 創(chuàng)建角色 |
| ALTER ANY ROLE | 更改任何角色 |
| DROP ANY ROLE | 刪除任何角色 |
| GRANT ANY ROLE | 向其他角色或用戶授予任何角色 注意:沒有對應(yīng)的REVOKE ANY ? ROLE權(quán)限 |
| 回退段權(quán)限 | |
| CREATE ROLLBACK SEGMENT | 創(chuàng)建回退段 注意:沒有對撤銷段的權(quán)限 |
| ALTER ROLLBACK SEGMENT | 更改回退段 |
| DROP ROLLBACK SEGMENT | 刪除回退段 |
| 序列權(quán)限 | |
| CREATE SEQLENCE | 在自己的方案中創(chuàng)建、更改、刪除和選擇序列 |
| CREATE ANY SEQUENCE | 在任何方案中創(chuàng)建序列 |
| ALTER ANY SEQUENCE | 在任何方案中更改序列 |
| DROP ANY SEQUENCE | 在任何方案中刪除序列 |
| SELECT ANY SEQUENCE | 在任何方案中從任何序列中進行選擇 |
| 會話權(quán)限 | |
| CREATE SESSION | 創(chuàng)建會話,登錄進入(連接到)數(shù)據(jù)庫 |
| ALTER SESSION | 運行ALTER SESSION語句,更改會話的屬性 |
| ALTER RESOURCE COST | 更改概要文件中的計算資源消耗的方式 |
| RESTRICTED SESSION | 在數(shù)據(jù)庫處于受限會話模式下連接到數(shù)據(jù) |
| 同義詞權(quán)限 | |
| CREATE SYNONYM | 在自己的方案中創(chuàng)建、刪除同義詞 |
| CREATE ANY SYNONYM | 在任何方案中創(chuàng)建專用同義詞 |
| CREATE PUBLIC SYNONYM | 創(chuàng)建公共同義詞 |
| DROP ANY SYNONYM | 在任何方案中刪除同義詞 |
| DROP PUBLIC SYNONYM | 刪除公共同義詞 |
| 表權(quán)限 | |
| CREATE TABLE | 在自己的方案中創(chuàng)建、更改和刪除表 |
| CREATE ANY TABLE | 在任何方案中創(chuàng)建表 |
| 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子句對任何方案中的表、視圖執(zhí)行一個SQL語句的閃回查詢 |
| 表空間權(quán)限 | |
| CREATE TABLESPACE | 創(chuàng)建表空間 |
| ALTER TABLESPACE | 更改表空間 |
| DROP TABLESPACE | 刪除表空間,包括表、索引和表空間的群集 |
| MANAGE TABLESPACE | 管理表空間,使表空間處于ONLINE(聯(lián)機)、OFFLINE(脫機)、BEGIN BACKUP(開始備份)、END BACKUP(結(jié)束備份)狀態(tài) |
| UNLIMITED TABLESPACE | 不受配額限制地使用表空間 注意:只能將UNLIMITED ? TABLESPACE授予賬戶而不能授予角色 |
| 用戶權(quán)限 | |
| CREATE USER | 創(chuàng)建用戶 |
| ALTER USER | 更改用戶 |
| BECOME USER | 當(dāng)執(zhí)行完全裝入時,成為另一個用戶 |
| DROP USER | 刪除用戶 |
| 視圖權(quán)限 | |
| CREATE VIEW | 在自己的方案中創(chuàng)建、更改和刪除視圖 |
| CREATE ANY VIEW | 在任何方案中創(chuàng)建視圖 |
| DROP ANY VIEW | 在任何方案中刪除視圖 |
| COMMENT ANY TABLE | 在任何方案中為任何表、視圖或者列添加注釋 |
| FLASHBACK ANY TABLE | 允許使用AS OF子句對任何方案中的表、視圖執(zhí)行一個SQL語句的閃回查詢 |
| 觸發(fā)器權(quán)限 | |
| CREATE TRIGGER | 在自己的方案中創(chuàng)建、更改和刪除觸發(fā)器 |
| CREATE ANY TRIGGER | 在任何方案中創(chuàng)建觸發(fā)器 |
| ALTER ANY TRIGGER | 在任何方案中更改觸發(fā)器 |
| DROP ANY TRIGGER | 在任何方案中刪除觸發(fā)器 |
| ADMINISTER DATABASE TRIGGER | 允許創(chuàng)建ON DATABASE觸發(fā)器。在能夠創(chuàng)建ON DATABASE觸發(fā)器之前,還必須先擁有CREATE TRIGGER或CREATE ANY ? TRIGGER權(quán)限 |
| 專用權(quán)限 | |
| SYSOPER (系統(tǒng)操作員權(quán)限) | 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 (系統(tǒng)管理員權(quán)限) | SYSOPER的所有權(quán)限,并帶有WITH ADMIN ? OPTION子句 CREATE ? DATABASE RECOVER DATABASE UNTIL |
| 其他權(quán)限 | |
| ANALYZE ANY | 對任何方案中的任何表、群集或者索引執(zhí)行ANALYZE語句 |
| GRANT ANY OBJECT PRIVILEGE | 授予任何方案上的任何對象上的對象權(quán)限 注意:沒有對應(yīng)的REVOKE ANY ? OBJECT PRIVILEGE |
| GRANT ANY PRIVILEGE | 授予任何系統(tǒng)權(quán)限 注意:沒有對應(yīng)的REVOKE ANY ? PRIVILEGE |
| SELECT ANY DICTIONARY | 允許從sys用戶所擁有的數(shù)據(jù)字典表中進行選擇 |
在Oracle9i以后,系統(tǒng)權(quán)限不會被級聯(lián)刪除。即用戶A把某權(quán)限用with admin option方式賦給了B,而B把此權(quán)限又賦給了用戶C,如果用戶A把用戶B的權(quán)限刪除,則C的權(quán)限依然存在。
4.對象權(quán)限
? GRANT [權(quán)限] ON [對象] TO [用戶] [WITH GRANT OPTION] ;?revoke[權(quán)限]? on? [對象] from [用戶];
? 對象權(quán)限和系統(tǒng)權(quán)限不一樣會被級聯(lián)刪除。指允許用戶可以對數(shù)據(jù)庫對象進行操作的權(quán)利(表、視圖、序列)。
?(這張表又是抄的。)
? ? ?
| ?對象權(quán)限 | ???表??? | ?視圖?? | 序列??? | 過程 |
| ???修改(alter)?????????????????? | ?√? | ? | ?√ | ? |
| ?刪除(delete) | ?√?? | √?? | ? | ? |
| ?執(zhí)行(execute)? | ? | ? | ? | √ |
| ?索引(index) | √? | ? | ? | ? |
| 插入(insert)? | √? | √?? | ? | ? |
| 關(guān)聯(lián)(references)? | √? | √?? | ? | ? |
| ?選擇(select) | √? | √?? | √ | ? |
| ???更新(update)? | √? | √?? | ? | ? |
? ? ? grant? ALL on [對象] to [用戶A]; A則擁有上表打勾的對應(yīng)一列的所有對象權(quán)限。
5.角色管理
? ?角色是權(quán)限的集合,可以把權(quán)限加入到角色中,再把角色和用戶關(guān)聯(lián)起來,那么用戶就可以擁有角色中的權(quán)限。
??
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'; ---系統(tǒng)權(quán)限表 select * from dba_tab_privs where grantee ='PROGRAMMER'; ---對象權(quán)限表? ?注意:創(chuàng)建數(shù)據(jù)到系統(tǒng)表里會自動轉(zhuǎn)換成大寫。
?
? ??
?
?
?
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Oracle 原理:用户和权限,Profile,系统权限,对象权限,角色的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 原理:复杂的SQL语句
- 下一篇: java信息管理系统总结_java实现科