每個Oracle用戶都有一個名字和口令,并擁有一些由其創(chuàng)建的表、視圖和其他資源。Oracle角色(role) 就是一組權(quán)限(privilege)(或者是每個用戶根據(jù)其狀態(tài)和條件所需的訪問類型)。用戶可以給角色授予或賦予指定的權(quán)限,然后將角色賦給相應(yīng)的用 戶。一個用戶也可以直接給其他用戶授權(quán)。
??? 數(shù)據(jù)庫系統(tǒng)權(quán)限(Database System Privilege)允許用戶執(zhí)行特定的命令集。例如,CREATE TABLE權(quán)限允許用戶創(chuàng)建表,GRANT ANY PRIVILEGE 權(quán)限允許用戶授予任何系統(tǒng)權(quán)限。
??? 數(shù)據(jù)庫對象權(quán)限(Database Object Privilege)使得用戶能夠?qū)Ω鱾€對象進(jìn)行某些操作。例如DELETE權(quán)限允許用戶 刪除表或視圖的行,SELECT權(quán)限允許用戶通過select從表、視圖、序列(sequences)或快照(snapshots)中查詢信息。
一、創(chuàng)建用戶
?? Oracle內(nèi)部有兩個建好的用戶:SYSTEM和 SYS。用戶可直接登錄到SYSTEM用戶以創(chuàng)建其他用戶,因為SYSTEM具有創(chuàng)建別的用戶的權(quán)限。在安裝Oracle時,用戶或系統(tǒng)管理員首先可以為自己建立一個用戶。例如:
??? create user user01 identified by u01;
??? 該命令還可以用來設(shè)置其他權(quán)限,詳細(xì)情況參見自學(xué)資料。要改變一個口令,可以使用alter user命令:
??? alter user user01 identified by usr01;
??? 現(xiàn)在user01的口令已由“u01”改為“usr01”。
??? 除了alter user命令以外,用戶還可以使用password命令。如果使用password命令,用戶輸入的新口令將不在屏幕上顯示。有dba特權(quán)的用戶可以通過 password命令改變?nèi)魏纹渌脩舻目诹睿黄渌脩糁荒芨淖冏约旱目诹睢?
??? 當(dāng)用戶輸入password命令時,系統(tǒng)將提示用戶輸入舊口令和新口令,如下所示:
??? password
??? Changing password for user01
??? Old password:
??? New password:
??? Retype new password:
??? 當(dāng)成功地修改了口令時,用戶會得到如下的反饋:
??? Password changed
二 、 刪除用戶
??? 刪除用戶,可以使用drop user命令,如下所示:
??? drop user user01;
?? 如果用戶擁有對象,則不能直接刪除,否則將返回一個錯誤值。指定關(guān)鍵字CASCADE,可刪除用戶所有的對象,然后再刪除用戶。下面的例子用來刪除用戶與 其對象:
??? drop user user01 CASCADE;
三 、 3種標(biāo)準(zhǔn)角色
??? Qracle為了兼容以前的版本,提供了三種標(biāo)準(zhǔn)的角色(role):CONNECT、RESOURCE和DBA。
??? 1. CONNECT Role(連接角色)
??? 臨時用戶,特別是那些不需要建表的用戶,通常只賦予他們CONNECTrole。CONNECT是使用Oracle的簡單權(quán)限,這種權(quán)限只有在對其他用戶 的表有訪問權(quán)時,包括select、insert、update和delete等,才會變得有意義。擁有CONNECT role的用戶還能夠創(chuàng)建表、視圖、序列(sequence)、簇(cluster)、同義詞(synonym )、會話(session)和與其他數(shù)據(jù)庫的鏈(link)。
??? 2. RESOURCE Role(資源角色)
??? 更可靠和正式的數(shù)據(jù)庫用戶可以授予RESOURCE role。RESOURCE提供給用戶另外的權(quán)限以創(chuàng)建他們自己的表、序列、過程(procedure)、觸發(fā)器(trigger)、索引(index) 和簇(cluster)。
??? 3. DBA Role(數(shù)據(jù)庫管理員角色)
??? DBA role擁有所有的系統(tǒng)權(quán)限----包括無限制的空間限額和給其他用戶授予各種權(quán)限的能力。SYSTEM由DBA用戶擁有。下面介紹一些DBA經(jīng)常使用的 典型權(quán)限。
?? (1)grant(授權(quán))命令
??? 下面對剛才創(chuàng)建的用戶user01授權(quán),命令如下:
??? grant connect, resource to user01;
?? (2)revoke(撤消)權(quán)限
??? 已授予的權(quán)限可以撤消。例如撤消(1)中的授權(quán),命令如下:
??? revoke connect, resource from user01;
??? 一個具有DBA角色的用戶可以撤消任何別的用戶甚至別的DBA的CONNECT、RESOURCE 和DBA的其他權(quán)限。當(dāng)然,這樣是很危險的,因此,除非真正需要,DBA權(quán)限不應(yīng)隨便授予那些不是很重要的一般用戶。
??? 撤消一個用戶的所有權(quán)限,并不意味著從Oracle中刪除了這個用戶,也不會破壞用戶創(chuàng)建的任何表;只是簡 單禁止其對這些表的訪問。其他要訪問這些表的用戶可以象以前那樣地訪問這些表。
四、創(chuàng)建角色
?? 除了前面講到的三種系統(tǒng)角色----CONNECT、RESOURCE和DBA,用戶還可以在Oracle創(chuàng)建自己的role。用戶創(chuàng)建的role可以由 表或系統(tǒng)權(quán)限或兩者的組合構(gòu)成。為了創(chuàng)建role,用戶必須具有CREATE ROLE系統(tǒng)權(quán)限。下面給出一個create role命令的實例:
??? create role STUDENT;
??? 這條命令創(chuàng)建了一個名為STUDENT的role。
??? 一旦創(chuàng)建了一個role,用戶就可以給他授權(quán)。給role授權(quán)的grant命令的語法與對對用戶的語法相同。在給role授權(quán)時,在grant命令的to 子句中要使用role的名稱,如下所示:
??? grant select on CLASS to STUDENT;
?? 現(xiàn)在,擁有 STUDENT 角色的所有用戶都具有對 CLASS 表的select權(quán) 限。
五、刪除角色
?? 要刪除角色,可以使用drop role命令,如下所示:
?? drop role STUDENT;
?? 指定的role連同與之相關(guān)的權(quán)限將從數(shù)據(jù)庫中全部刪除
今天晚上在oracle創(chuàng)建了一個新的表空間和一個新的用戶,當(dāng)我用這個新用戶創(chuàng)建表時,卻出現(xiàn):ORA-01950: 表空間'USERS'中無權(quán)限 。我已經(jīng)把創(chuàng)建表的權(quán)限賦給了此用戶,怎么還會缺少權(quán)限呢?
后面到網(wǎng)上找了一下,原來是沒有把resource和connect 權(quán)限賦給用戶,賦予權(quán)限:grant resource,connect to 用戶名;,就ok了。
下面是用戶權(quán)限列表:
CONNECT角色:?? --是授予最終用戶的典型權(quán)利,最基本的??
ALTER?? SESSION?? --修改會話??
CREATE?? CLUSTER ? --建立聚簇??
CREATE?? DATABASE?? LINK ? --建立數(shù)據(jù)庫鏈接??
CREATE?? SEQUENCE ? --建立序列??
CREATE?? SESSION?? --建立會話??
CREATE?? SYNONYM?? --建立同義詞??
CREATE?? VIEW ? --建立視圖??
RESOURCE角色:?? --是授予開發(fā)人員的??
CREATE?? CLUSTER ? --建立聚簇??
CREATE?? PROCEDURE ? --建立過程??
CREATE?? SEQUENCE ? --建立序列??
CREATE?? TABLE ? --建表??
CREATE?? TRIGGER?? --建立觸發(fā)器??
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
