日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

oracle的體系結(jié)構(gòu)之權(quán)限管理和用戶schema(二)

 昵稱10504424 2014-02-24

oracle的體系結(jié)構(gòu)之權(quán)限管理和用戶schema(二)

2.oracle的權(quán)限管理

oracle數(shù)據(jù)庫有最重要的兩個(gè)用戶,sys 和 system,sys擁有最高權(quán)限。

oracle權(quán)限分為兩種:一種是系統(tǒng)權(quán)限 ,一種是對象權(quán)限。

下面簡單的演示一下,用system用戶登錄并創(chuàng)建test用戶

image

現(xiàn)在用新創(chuàng)建的這個(gè)用戶登錄

image

提示沒有create session權(quán)限。

說明:新創(chuàng)建的用戶沒有任何權(quán)限,連登錄數(shù)據(jù)庫的權(quán)限都沒有

現(xiàn)在依舊用system用戶為test用戶賦予登錄權(quán)限

image

授權(quán)過后就可以登錄了,現(xiàn)在創(chuàng)建表試試

image

依舊是權(quán)限不足,沒有創(chuàng)建表的權(quán)限,又必須要管理員為其賦予創(chuàng)建表的權(quán)限。由于篇幅問題,這里就不演示了。

用戶可以用“select * from session_privs;”查詢自己擁有的權(quán)限。關(guān)于權(quán)限的查詢可以看下“http://hi.baidu.com/jason_xux/item/f970db14f772caf386ad4e46”。

到這兒想必大家知道權(quán)限是怎么一回事了吧。

(1)系統(tǒng)權(quán)限和對象權(quán)限

關(guān)于系統(tǒng)權(quán)限,顧名思義就是對系統(tǒng)一些操作的權(quán)限,比如剛剛的登錄的'create session’就是一種系統(tǒng)權(quán)限,'create table’'create user’等都是一些比較常見的系統(tǒng)權(quán)限。

對象權(quán)限就是對對象的權(quán)限,當(dāng)然這句是廢話,呵呵,所謂對象就是'表’ '存儲過程’之類的。對象歸創(chuàng)建者所有,但是你要想要其他用戶可以訪問你創(chuàng)建的對象就必須你或者管理員賦予給他權(quán)限。

(2)角色

在實(shí)際應(yīng)用中,一個(gè)用戶可能需要多種權(quán)限,比如一個(gè)軟件開發(fā)者需要登錄權(quán)限 創(chuàng)建表的權(quán)限 創(chuàng)建存儲過程 創(chuàng)建視圖之類的權(quán)限,如果一條一條的為該用戶賦予權(quán)限的話就會(huì)加重DBA的負(fù)擔(dān),如果可以把這些權(quán)限一次性賦予給改用戶就好了,oracle提供了一種角色的東西(sql server也有),角色可以理解為權(quán)限的集合。

oracle內(nèi)置了很多角色,用“select * from dba_roles;”可以查詢。“select * from user_role_privs;”查詢自己擁有的角色。

image

下面我們依舊來演示一下

image

首先切換到system用戶,收回test用戶的'create session’權(quán)限,然后創(chuàng)建名為'test_role’角色,將'create session’'create table’權(quán)限賦予'test_role’角色,再將'test_role’角色賦予test用戶,這樣test用戶就擁有'create session’'create table’兩種權(quán)限了。

(3)用戶schema

schema是數(shù)據(jù)對象的集合,這其實(shí)跟sql server里的數(shù)據(jù)庫差不多,只不過sql server將數(shù)據(jù)庫與用戶分離開來了,oracle中一般一個(gè)用戶對應(yīng)一個(gè)schema,默認(rèn)的缺省值和用戶名相同,當(dāng)我們在訪問表的時(shí)候,默認(rèn)會(huì)訪問和該用戶名一樣的schema里面的表,如我們用scott用戶執(zhí)行“select * from emp”,這條查詢語句和“select * from scott.emp”是一樣的,既然一個(gè)用戶對應(yīng)一個(gè)schema,那么這個(gè)schema是在什么時(shí)候創(chuàng)建的呢,schema好像并不是在創(chuàng)建user時(shí)就創(chuàng)建的,而是在該用戶創(chuàng)建了第一個(gè)對象之后才將schema真正創(chuàng)建的,只有user下存在對象,他對應(yīng)的schema才會(huì)存在,如果user下不存在任何對象了,schema也就不存在了。

我在網(wǎng)上找到了一個(gè)很形象的比喻:

“我們可以把Database看作是一個(gè)大倉庫,倉庫分了很多很多的房間,Schema就是其中的房間,一個(gè)Schema代表一個(gè)房間,Table可以看作是每個(gè)Schema中的床,Table(床)被放入每個(gè)房間中,不能放置在房間之外,那豈不是晚上睡覺無家可歸了,然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一樣,數(shù)據(jù)庫中存儲數(shù)據(jù)的基本單元是Table,現(xiàn)實(shí)中每個(gè)倉庫放置物品的基本單位就是床, User就是每個(gè)Schema的主人,(所以Schema包含的是Object,而不是User),user和schema是一一對應(yīng)的,每個(gè)user在沒有特別指定下只能使用自己schema(房間)的東西,如果一個(gè)user想使用其他schema(房間)的東西,那就要看那個(gè)schema(房間)的user(主人)有沒有給你這個(gè)權(quán)限了,或者看這個(gè)倉庫的老大(DBA)有沒有給你這個(gè)權(quán)限了。換句話說,如果你是某個(gè)倉庫的主人,那么這個(gè)倉庫的使用權(quán)和倉庫中的所有東西都是你的(包括房間),你有完全的操作權(quán),可以扔掉不用的東西從每個(gè)房間,也可以放置一些有用的東西到某一個(gè)房間,你還可以給每個(gè)User分配具體的權(quán)限,也就是他到某一個(gè)房間能做些什么,是只能看(Read-Only),還是可以像主人一樣有所有的控制權(quán)(R/W),這個(gè)就要看這個(gè)User所對應(yīng)的角色Role了?!?--摘自網(wǎng)絡(luò)

(4)權(quán)限的級聯(lián)賦予與收回

如果所有的權(quán)限的賦予和收回都要DBA來操作的話,那確實(shí)對DBA殘酷了點(diǎn)兒,那能不能又DBA給某個(gè)用戶賦予某種權(quán)限 然后由該用戶在向其他用戶賦予該權(quán)限呢?答案是可以的。

下面繼續(xù)演示一下。

image

我們用system登錄,將test的test_role角色撤銷,這時(shí)test用戶不具備任何權(quán)限,創(chuàng)建用戶test1,再將test_role角色賦予給test用戶 但是后面跟了“with admin option”,這就意味著test用戶可以將test_role角色賦予給其他角色。我們用test用戶登錄,將test_role賦予給test1用戶,再用test1用戶登錄 果然可以成功,呵呵 這當(dāng)然也是廢話。接下來用system用戶將test的test_role角色收回,這時(shí)test用戶不在可以登錄 ,但是test1用戶依然可以登錄。這就說明“with admin option”是可以將權(quán)限或者角色級聯(lián)傳遞,但是管理員收回時(shí)不會(huì)級聯(lián)收回。

注意:“with admin option”只能用于系統(tǒng)權(quán)限的傳遞。

下面看下對象權(quán)限的級聯(lián)傳遞

image

我們用scott用戶登錄,將dept的查詢權(quán)限交給test用戶,并允許test用戶繼續(xù)傳遞。用test用戶登錄,可以看到test是可以查詢scott的dept表的,繼續(xù)將scott的dept查詢權(quán)限賦予給test1,顯現(xiàn)現(xiàn)在test1也是可以查詢scott的dept。現(xiàn)在由scott將test的權(quán)限收回,現(xiàn)在test用戶明顯不能查詢了,再看test1,可以看到現(xiàn)在test1也不具有對scott的dept表查詢權(quán)限了。

注意:“with grant option”只能用于對象權(quán)限。查詢其他用戶的數(shù)據(jù)對象時(shí),對象前必須加上其schema。如上面的“scott.dept”。

總結(jié):系統(tǒng)權(quán)限收回時(shí)不會(huì)級聯(lián)收回,對象權(quán)限收回時(shí)會(huì)級聯(lián)收回。

好了,這篇就到這兒吧!下篇《oracle的體系結(jié)構(gòu)之存儲結(jié)構(gòu)(三)》

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多