1、在PLSQL里,用sys(oracle系統(tǒng)用戶)登陸,登陸的時(shí)候一定要選擇SYSDBA。普通用戶登陸選擇normal;
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供博愛(ài)網(wǎng)站建設(shè)、博愛(ài)做網(wǎng)站、博愛(ài)網(wǎng)站設(shè)計(jì)、博愛(ài)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、博愛(ài)企業(yè)網(wǎng)站模板建站服務(wù),10年博愛(ài)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
2、在左邊的菜單里找到Users節(jié)點(diǎn),右擊選擇添加功能。在打開(kāi)的界面里寫(xiě)上用戶名、密碼,默認(rèn)表空間如果已經(jīng)創(chuàng)建了表空間的話,選擇相應(yīng)的表空間,沒(méi)有的一般選擇users,臨時(shí)表空間一般選擇temp,概要文件選擇default即可;
3、對(duì)象權(quán)限無(wú)需添加;
4、角色權(quán)限選擇connect和resource,也可以選擇dba,這樣其他權(quán)限都不用給了,不過(guò)建議不要給dba權(quán)限,數(shù)據(jù)庫(kù)權(quán)限太大了,容易導(dǎo)致數(shù)據(jù)安全隱患角色權(quán)限選擇connect和resource即可。也可以選擇dba,這樣其他權(quán)限都不用給了,不過(guò)建議不要給dba權(quán)限,數(shù)據(jù)庫(kù)權(quán)限太大了,容易導(dǎo)致數(shù)據(jù)安全隱患;
5、系統(tǒng)權(quán)限選擇create any procedure、create any view、debug connect session、unlimited tablespace。debug connect session:調(diào)試存儲(chǔ)過(guò)程測(cè)試,根據(jù)具體的情況設(shè)定;
6、限額無(wú)需改動(dòng);
7、最后點(diǎn)擊應(yīng)用保存即可。
ORACLE中怎么設(shè)置SEQUENCE權(quán)限步驟如下:
1、Create Sequence
首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權(quán)限。
創(chuàng)建語(yǔ)句如下:
CREATE?SEQUENCE seqTest
INCREMENT?BY?1?--?每次加幾個(gè)
START?WITH?1?--?從1開(kāi)始計(jì)數(shù)
NOMAXvalue?--?不設(shè)置最大值
NOCYCLE?--?一直累加,不循環(huán)
CACHE?10;?--設(shè)置緩存cache個(gè)序列,如果系統(tǒng)down掉了或者其它情況將會(huì)導(dǎo)致序列不連續(xù),也可以設(shè)置為---------NOCACHE
2、得到Sequence值?
定義好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的當(dāng)前值
NextVal:增加sequence的值,然后返回 增加后sequence值
得到值語(yǔ)句如下:
SELECT?Sequence名稱.CurrVal?FROM?DUAL;?
如得到上邊創(chuàng)建Sequence值的語(yǔ)句為:
select?seqtest.currval?from?dual
在Sql語(yǔ)句中可以使用sequence的地方:
- 不包含子查詢、snapshot、VIEW的 SELECT 語(yǔ)句
- INSERT語(yǔ)句的子查詢中
- INSERT語(yǔ)句的values中
- UPDATE 的 SET中
如在插入語(yǔ)句中
insert?into?表名(id,name)values(seqtest.Nextval,'sequence?插入測(cè)試');
3、Alter Sequence?
擁有ALTER ANY SEQUENCE 權(quán)限才能改動(dòng)sequence. 可以alter除start至以外的所有sequence參數(shù).如果想要改變start值,必須 drop sequence 再 re-create。
4、Drop Sequence
DROP?SEQUENCE?seqTest;?
5、一個(gè)例子
create?or?replace?trigger?tri_test_id
before?insert?on?S_Depart???--S_Depart?是表名
for?each?row
declare
nextid?number;
begin
IF?:new.DepartId?IS?NULLor?:new.DepartId=0?THEN?--DepartId是列名
select?SEQ_ID.nextval?--SEQ_ID正是剛才創(chuàng)建的
into?nextid
from?sys.dual;
:new.DepartId:=nextid;
end?if;
end?tri_test_id;
create user 用戶名 identified by 密碼 default tablespace 表空間名 temporary tablespace 臨時(shí)表空間名 ACCOUNT UNLOCK;\x0d\x0aGRANT CONNECT TO 用戶名; 連接數(shù)據(jù)庫(kù)\x0d\x0aGRANT RESOURCE TO 用戶名; \x0d\x0agrant alter,delete,update,insert,select on 表名 to 用戶名;
開(kāi)始,運(yùn)行輸入cmd或是wind+r輸入cmd
使用dba登錄。
先創(chuàng)建一個(gè)用戶:使用命令:create user 用戶名 identified by 密碼
給該用戶解鎖:使用命令:用戶解鎖 alter user 用戶名 account unlock(不解鎖無(wú)法登陸)
給該用戶授權(quán):grant create session to 用戶名。這里是給的登錄權(quán)限。如果想把dba的權(quán)限授權(quán)給該用戶。
我們經(jīng)常談及Oracle的權(quán)限 比如Connect DBA resource sysdba select any table select_catelog_role這樣一些權(quán)限 讓我們眼花繚亂的 那么如何來(lái)區(qū)分這些種類(lèi)繁多的privilege中不至于眼迷離呢 這個(gè)文章將會(huì)對(duì)你在這方面的了解起到幫助
以上我們看到的這些權(quán)限 都是可以通過(guò)grant語(yǔ)句來(lái)進(jìn)行權(quán)限賦予 同時(shí)也可以用過(guò)revoke來(lái)進(jìn)行權(quán)限收回的操作的 但是 他們雖然都在grant里出現(xiàn) 但是有各自有著本質(zhì)的不同
oracle里的權(quán)限有兩種權(quán)限 系統(tǒng)權(quán)限和對(duì)象權(quán)限 所謂系統(tǒng)權(quán)限 就是oracle里已經(jīng)hardcode寫(xiě)死的權(quán)限 這些權(quán)限 我們是不能自己去擴(kuò)展的 比如上面提到的select any table create any table create table等 這里的權(quán)限已經(jīng)在oracle里全部規(guī)定好了
我們可以通過(guò)查看system_privilege_map這個(gè)數(shù)據(jù)字典表來(lái)查看所以的oracle系統(tǒng)內(nèi)置的權(quán)限
SQL select * from system_privilege_map;
PRIVILEGE NAME?????????????????????????????????????? PROPERTY
ALTER SYSTEM?????????????????????????????????????
AUDIT SYSTEM?????????????????????????????????????
CREATE SESSION???????????????????????????????????
ALTER SESSION????????????????????????????????????
RESTRICTED SESSION???????????????????????????????
這里就是所有的內(nèi)置的系統(tǒng)權(quán)限了 其實(shí)如果有開(kāi)發(fā)過(guò)權(quán)限系統(tǒng)的經(jīng)驗(yàn)的話 對(duì)這里的這個(gè)概念 可以理解為function permission 也就是你可以進(jìn)行哪些操作
這里特別提到一個(gè)另外的知識(shí)點(diǎn) 有網(wǎng)游朋友問(wèn)過(guò)我 create any table和create table有什么區(qū)別 create table只能老老實(shí)實(shí)的給自己的scheam創(chuàng)建表 而不能以create table otherschema tablename這樣的方式給其他的schema創(chuàng)建表 額外提到這點(diǎn) 有很多朋友這塊還是模糊的
oracle通過(guò)數(shù)據(jù)字典表dba_sys_privs這個(gè)表來(lái)記錄user被賦予的系統(tǒng)權(quán)限 比如
我們現(xiàn)在執(zhí)行
SQLgrant select any table to test ; 把select any table的權(quán)限賦予test 這個(gè)用戶
Grant succeeded
SQL select * from dba_sys_privs where grantee = TEST ;
GRANTEE??????????????????????? PRIVILEGE??????????????????????????????? ADMIN_OPTION
TEST ????????????????????????? SELECT ANY TABLE???????????????????????? NO
這里就可以查詢到這個(gè)記錄了 admin_option表示的是是否有把當(dāng)前這個(gè)系統(tǒng)權(quán)限grant給其他用戶的意思 yes 表示test 除了自己有這個(gè)權(quán)限 還可以把這個(gè)權(quán)限賦予其他用戶 N就是沒(méi)有g(shù)rant的權(quán)限了
我們可以用一下語(yǔ)句試試
SQL grant select any table to test with admin option;
Grant succeeded
在來(lái)看看剛才的記錄
GRANTEE??????????????????????? PRIVILEGE??????????????????????????????? ADMIN_OPTION
TEST ????????????????????????? SELECT ANY TABLE???????????????????????? YES
現(xiàn)在test 就可以賦予select any table給別的用戶了
下面我們看看object permission 其實(shí)這里已經(jīng)名字就可以區(qū)分開(kāi)了 這里是針對(duì)于特定的對(duì)象的權(quán)限 上面的系統(tǒng)權(quán)限是限定了可以操作的功能 而object permission就更細(xì)化了 具體到了莫個(gè)對(duì)象你可以操作的功能的權(quán)限
比如 A用戶建立了一個(gè)TableA表 現(xiàn)在為了讓B用戶可以看到A這個(gè)對(duì)象 我們就可以把A table的select權(quán)限 進(jìn)行賦予 這里的A table上的select權(quán)限就是一個(gè)對(duì)象權(quán)限
除了select 還有update delete insert alter drop index references這樣正對(duì)于對(duì)象的權(quán)限
除了可以給表對(duì)象指定對(duì)象權(quán)限外 view sequence procedure function package triggger MV等這些oracle里的對(duì)象都可以進(jìn)行對(duì)象的權(quán)限指定
對(duì)于對(duì)象權(quán)限來(lái)說(shuō) 由于對(duì)象權(quán)限完全是動(dòng)態(tài)的 在對(duì)一個(gè)對(duì)象進(jìn)行g(shù)rant的時(shí)候 才能看到具體的對(duì)象權(quán)限 所以對(duì)象權(quán)限是不像system privilege那樣有一個(gè)表來(lái)描述的 只有一個(gè)表來(lái)記錄用戶和這個(gè)用戶對(duì)于的對(duì)象權(quán)限的關(guān)系表 這個(gè)表就是dba_tab_privs;
這里這個(gè)名字比較容易讓人誤會(huì)為只有table的對(duì)象權(quán)限 其實(shí)不然 這里其他類(lèi)型的對(duì)象的對(duì)象權(quán)限也會(huì)記錄進(jìn)來(lái)
實(shí)驗(yàn)一下 還是剛才的test 用戶 我現(xiàn)在把對(duì)象dbms_xplan的execute的權(quán)限給他 dbms_xplan這個(gè)有些朋友可能不熟悉 這是執(zhí)行計(jì)劃有關(guān)的一個(gè)對(duì)象 朋友們?nèi)绻麤](méi)有安裝執(zhí)行計(jì)劃的包 可以用dbms_output對(duì)象做實(shí)驗(yàn)
SQLgrant execute on dbms_xplan to test ;
SQLgrant execute on dbms_output to test ;
SQL select * from dba_tab_privs where grantee = TEST ;
GRANTEE??????????????????????? OWNER????????????????????????? TABLE_NAME???????????????????? GRANTOR??????????????????????? PRIVILEGE??????????????????????????????? GRANTABLE HIERARCHY
TEST ????????????????????????? SYS??????????????????????????? DBMS_XPLAN???????????????????? SYS??????????????????????????? EXECUTE????????????????????????????????? NO??????? NO
TEST ????????????????????????? SYS??????????????????????????? DBMS_OUTPUT??????????????????? SYS??????????????????????????? EXECUTE
這里注意和fuanction 不同的 這里有一個(gè)GRANTABLE的字段 意味和上面admin option一樣的作用
不過(guò)這里的sql不同了
SQLgrant execute on dbms_xplan to test with grant option;
這里是oracle里的權(quán)限了
不過(guò)有的人可能會(huì)問(wèn)道 咦 你是不是漏掉了 不是我們還可以
grant connect resource dba to username;嗎 那她們都是什么權(quán)限呀
在這里就要注意了 這里的connct resource dba都不是權(quán)限 而是一個(gè)role 角色 一個(gè)角色是 個(gè)或者多個(gè)系統(tǒng)權(quán)限或者對(duì)象權(quán)限的集合 是便于我們管理用戶賦權(quán)而演化而來(lái)的 這里的create role和賦予role權(quán)限我們就不詳談了 朋友們可以自己查一查相關(guān)資料 role是我們可以動(dòng)態(tài)建立的 建立的role可以用grant來(lái)賦予權(quán)限 或者把一個(gè)role賦予另一個(gè)role
我們可以通過(guò)dba_roles這個(gè)表來(lái)查詢系統(tǒng)里所有的role
SQL select * from dba_roles;
ROLE?????????????????????????? PASSWORD_REQUIRED
CONNECT??????????????????????? NO
RESOURCE?????????????????????? NO
DBA??????????????????????????? NO
SELECT_CATALOG_ROLE??????????? NO
EXECUTE_CATALOG_ROLE?????????? NO
DELETE_CATALOG_ROLE??????????? NO
我們可以把role的賦予一個(gè)用戶
比如
SQLgrant select_catalog_role to test ;
我們可以通過(guò)dba_role_privs來(lái)查詢相關(guān)用戶的role的賦予 比如
SQL select * from dba_role_privs where grantee = TEST ;
lishixinzhi/Article/program/Oracle/201311/16827
ORACLE數(shù)據(jù)庫(kù)中的權(quán)限和角色
Oracle數(shù)據(jù)庫(kù)是一種大型關(guān)系型的數(shù)據(jù)庫(kù),我們知道當(dāng)使用一個(gè)數(shù)據(jù)庫(kù)時(shí),僅僅能夠控制哪些人可以訪問(wèn)數(shù)據(jù)庫(kù),哪些人不能訪問(wèn)數(shù)據(jù)庫(kù)是無(wú)法滿足數(shù)據(jù)庫(kù)訪問(wèn)控制的。DBA需要通過(guò)一種機(jī)制來(lái)限制用戶可以做什么,不能做什么,這在Oracle中可以通過(guò)為用戶設(shè)置權(quán)限來(lái)實(shí)現(xiàn)。權(quán)限就是用戶可以執(zhí)行某種操作的權(quán)利。而角色是為了方便DBA管理權(quán)限而引入的一個(gè)概念,它實(shí)際上是一個(gè)命名的權(quán)限集合。
1 權(quán)限
Oracle數(shù)據(jù)庫(kù)有兩種途徑獲得權(quán)限,它們分別為:
① DBA直接向用戶授予權(quán)限。
② DBA將權(quán)限授予角色(一個(gè)命名的包含多個(gè)權(quán)限的集合),然后再將角色授予一個(gè)或多個(gè)用戶。
使用角色能夠更加方便和高效地對(duì)權(quán)限進(jìn)行管理,所以DBA應(yīng)該習(xí)慣于使用角色向用戶進(jìn)行授予權(quán)限,而不是直接向用戶授予權(quán)限。
Oracle中的權(quán)限可以分為兩類(lèi):
?系統(tǒng)權(quán)限
?對(duì)象權(quán)限
1.1 系統(tǒng)權(quán)限
系統(tǒng)權(quán)限是在數(shù)據(jù)庫(kù)中執(zhí)行某種操作,或者針對(duì)某一類(lèi)的對(duì)象執(zhí)行某種操作的權(quán)利。例如,在數(shù)據(jù)庫(kù)中創(chuàng)建表空間的權(quán)利,或者在任何模式中創(chuàng)建表的權(quán)利,這些都屬于系統(tǒng)權(quán)限。在Oracle9i中一共提供了60多種權(quán)限。
系統(tǒng)權(quán)限的權(quán)利很大,通常情況下:
① 只有DBA才應(yīng)當(dāng)擁有alter database系統(tǒng)權(quán)限,該權(quán)限允許用戶對(duì)數(shù)據(jù)庫(kù)物理結(jié)構(gòu)和可用性進(jìn)行修改。
② 應(yīng)用程序開(kāi)發(fā)者一般應(yīng)該擁有Create Table、Create View和Create Type等系統(tǒng)權(quán)限,用于創(chuàng)建支持前端的數(shù)據(jù)庫(kù)模式對(duì)象。
③ 普通用戶一般只具有Create session系統(tǒng)權(quán)限(可以通過(guò)Connection角色獲得),只有Create Session系統(tǒng)權(quán)限的用戶才能連接到數(shù)據(jù)庫(kù)
④ 只有具有Grant Any PRivilege系統(tǒng)權(quán)限用戶,或者獲取了具有With Admin Option選項(xiàng)的系統(tǒng)權(quán)限的用戶,才能夠成為其它用戶授予權(quán)限。
1.2對(duì)象權(quán)限
對(duì)象權(quán)限是針對(duì)某個(gè)特定的模式對(duì)象執(zhí)行操作的權(quán)利。只能針對(duì)模式對(duì)象來(lái)設(shè)置和管理對(duì)象權(quán)限。
對(duì)于模式對(duì)象:表、視圖、序列、存儲(chǔ)過(guò)程、存儲(chǔ)函數(shù)、包都可以對(duì)象設(shè)置權(quán)限。不同類(lèi)型模式對(duì)象具有不同的對(duì)象權(quán)限。比如,表、視圖等對(duì)象具有查詢(Select)、修改(Update)、刪除(Delete)等對(duì)象權(quán)限,而存儲(chǔ)過(guò)程、存儲(chǔ)函數(shù)等對(duì)象則具有執(zhí)行(Execute)等對(duì)象權(quán)限。
但是并不是所有的模式對(duì)象都可以設(shè)置對(duì)象權(quán)限。比如簇、索引、觸發(fā)器以及數(shù)據(jù)庫(kù)鏈接等模式就不具有對(duì)象權(quán)限。這些模式對(duì)象的訪問(wèn)控制是通過(guò)相應(yīng)的.系統(tǒng)權(quán)限來(lái)實(shí)現(xiàn)的,比如,要對(duì)索引進(jìn)行修改,必須擁有Alter Any Index系統(tǒng)權(quán)限。
用戶自動(dòng)擁有他的模式中所有對(duì)象的全部對(duì)象權(quán)限,他可以將這些對(duì)象權(quán)限授予其他的用戶或角色。比如,Test1用戶創(chuàng)建了一個(gè)表Table1,在沒(méi)有授權(quán)的情況下,用戶Test2不能查詢、修改、刪除這個(gè)表。如果Test1將ETP表的Select對(duì)象權(quán)限授予了Test2,則該用戶就可以查詢Table1表了。如果在為其它用戶授予對(duì)象權(quán)限時(shí)用了With Grant Option選項(xiàng),被授予權(quán)限的用戶還可以將這個(gè)權(quán)限在授予其他用戶。
2 角色
2.1角色的概念
角色就是多個(gè)相關(guān)權(quán)限的命名集合。通過(guò)角色來(lái)進(jìn)行對(duì)用戶授予權(quán)限,可以大大簡(jiǎn)化DBA的工作量。比如,處于統(tǒng)一部門(mén)中的30多個(gè)用戶都需要訪問(wèn)數(shù)據(jù)庫(kù)中的一系列表,DBA可以將這些表的中合適的對(duì)象權(quán)限授予一個(gè)角色,然后在把這個(gè)角色授予這些用戶,這樣進(jìn)行操作要比為沒(méi)有用戶進(jìn)行授權(quán)要便捷多了,而且要對(duì)這些用戶的權(quán)限進(jìn)行統(tǒng)一修改,只需要修改角色的權(quán)限即可。
2.2角色的優(yōu)點(diǎn)
通過(guò)角色為用戶授予權(quán)限,而不是直接向各個(gè)用戶授權(quán),具有以下優(yōu)點(diǎn):
?簡(jiǎn)化權(quán)限管理 DBA將用戶群分類(lèi),然后為每一類(lèi)用戶創(chuàng)建角色,并將該角色授予這類(lèi)用戶所需要的權(quán)限,最后在將改角色授予該類(lèi)中的各個(gè)用戶。這樣不僅簡(jiǎn)化了授權(quán)操作,而且當(dāng)這類(lèi)用戶的權(quán)限需求發(fā)生改變時(shí),只需要把角色的權(quán)限進(jìn)行改動(dòng),而不必修改每一位用戶的權(quán)限。
?動(dòng)態(tài)權(quán)限管理 角色可以被禁用或激活。當(dāng)角色被禁止使用時(shí),擁有該角色的用戶不再擁有授予改角色的權(quán)限了。這樣就可以對(duì)多個(gè)用戶的權(quán)限進(jìn)行動(dòng)態(tài)控制了。
?靈活的編程能力 角色是存儲(chǔ)在數(shù)據(jù)字典中的,并且可以為角色設(shè)置口令。這樣就能夠在應(yīng)用程序中對(duì)角色進(jìn)行控制。比如禁用或者激活等操作。
下面以O(shè)racle9i為例,給出具體的實(shí)現(xiàn)用戶授權(quán):
(1)設(shè)定各種角色,及其權(quán)限
CREATE ROLE checkerrole DENTIFIEDBYxm361001;
CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;
GRANT SELECT,UPDATE ON
account.paytable TO checkerrole;
GRANT CONNECT TO defaultrole;
(2)創(chuàng)建用戶
CREATE USER xiaoli IDENTIFIEDBY xiaoli;
(3)授權(quán)
GRANT checkerrole TO xiaoli;
GRANT defaultrole TO xiaoli;
(4)設(shè)定用戶缺省的角色
ALTER USER xiaoli DEFAULTROLE defaultrole;
(5)注冊(cè)過(guò)程
CONNECT xiaoli/xiaoli@oracle
此時(shí)用戶只有其缺省角色的權(quán)限。
(6)激活角色
SET ROLE checkerrole IDENTIFIEDBY xm361001;
----操作成功后,xiaoli擁有checkerrole的權(quán)限。
----這里的角色和口令是固定的,在應(yīng)用系統(tǒng)中可以由應(yīng)用管理人員自行設(shè)置則更為方便安全
;
文章題目:oracle怎么添加權(quán)限 oracle給用戶賦予權(quán)限哪些命令
標(biāo)題鏈接:http://jinyejixie.com/article24/hpcpce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站策劃、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、服務(wù)器托管、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)