select * from dba_synonyms //查詢,*代表返回數(shù)據(jù)庫所有的字段
//授權(quán)創(chuàng)建同義詞的權(quán)限給hrpuser用戶
grant create any synonym to hrpuser
//刪除公用同義詞EF_COST_WBWORKNUMDATA
drop public synonym EF_COST_WBWORKNUMDATA
//為ythis用戶的EF_IF_V_optTYPE表創(chuàng)建公用同義詞EF_IF_V_optTYPE。
create public synonym EF_IF_V_optTYPE for ytis. EF_IF_V_optTYPE
//表權(quán)限
//給與hrpuser用戶候址,EF_IF_V_optTYPE表的查詢權(quán)限
grant select on EF_IF_V_optTYPE to hrpuser
首先連接到托管Oracle的服務(wù)器寺渗,然后以SYSTEM帳戶身份連接到Oracle本身大猛。
該SYSTEM帳戶是安裝Oracle時自動生成的少數(shù)預(yù)定義管理帳戶之一。 SYSTEM能夠執(zhí)行大多數(shù)管理任務(wù)诅需,我們就看看帳戶管理漾唉。
創(chuàng)建用戶
連接后SYSTEM,只需發(fā)出CREATE USER命令即可生成新帳戶堰塌。
create books_admin(用戶名) books(表明) identified by 123456(密碼)
在這里赵刑,我們只是創(chuàng)建一個由指定的books_admin帳戶進(jìn)行IDENTIFIED身份驗證的帳戶password。
授權(quán)語句
books_admin創(chuàng)建新帳戶后场刑,我們現(xiàn)在可以開始使用該GRANT語句向帳戶添加權(quán)限般此。 GRANT是一個非常強大的語句,有許多可能的選項牵现,但核心功能是管理兩個users和roles整個數(shù)據(jù)庫的權(quán)限铐懊。
提供角色
通常,您首先要通過將帳戶附加到各種角色來為用戶分配權(quán)限瞎疼,從角色開始CONNECT:
grant CONNECT(角色名稱) TO books_admin(用戶名);
在某些情況下科乎,為了創(chuàng)建更強大的用戶,您還可以考慮添加RESOURCE角色(允許用戶為自定義模式創(chuàng)建命名類型)甚至DBA角色贼急,這允許用戶不僅創(chuàng)建自定義命名類型茅茂,還可以更改和銷毀它們同樣。
grant CONNECT, RESOURCE, DBA to books_admin(用戶名);
分配權(quán)限
接下來太抓,您需要確保用戶具有實際連接到數(shù)據(jù)庫并使用【創(chuàng)建會話的權(quán)限】grant create session空闲。我們還將它與【所有權(quán)限】結(jié)合使用grant any privileges。
grant create session to books_admin;//授予books_admin用戶創(chuàng)建session的權(quán)限走敌,即登陸權(quán)限
grant any privilege to books_admin(用戶名);
我們還需要確保我們的新用戶在系統(tǒng)中分配了磁盤空間來實際創(chuàng)建或修改表和數(shù)據(jù)碴倾,所以我們會grant tablespace這樣:
//授予用戶使用表空間的權(quán)限
grant unlimited tablespace to books_admin(用戶名)
表權(quán)限
雖然在較新版本的Oracle中通常不需要,但某些較舊的安裝可能要求您手動指定新用戶對特定架構(gòu)和數(shù)據(jù)庫表的訪問權(quán)限。
舉例來說影斑,如果我們希望我們的books_admin用戶有執(zhí)行能力SELECT给赞,UPDATE,INSERT矫户,和DELETE在功能books表中片迅,我們可以執(zhí)行以下GRANT語句:
grant select,insert,update,delete on books to books_admin
grant create table to zhangsan;//授予創(chuàng)建表的權(quán)限
grante drop table to zhangsan;//授予刪除表的權(quán)限
grant insert table to zhangsan;//插入表的權(quán)限
grant update table to zhangsan;//修改表的權(quán)限
grant all to public;//這條比較重要,授予所有權(quán)限(all)給所有用戶(public)
oralce對權(quán)限管理比較嚴(yán)謹(jǐn)皆辽,普通用戶之間也是默認(rèn)不能互相訪問的柑蛇,需要互相授權(quán)
grant select on tablename to zhangsan;//授予zhangsan用戶查看指定表的權(quán)限
grant drop on tablename to zhangsan;//授予刪除表的權(quán)限
grant insert on tablename to zhangsan;//授予插入的權(quán)限
grant update on tablename to zhangsan;//授予修改表的權(quán)限
grant insert(id) on tablename to zhangsan;
grant update(id) on tablename to zhangsan;//授予對指定表特定字段的插入和修改權(quán)限,注意驱闷,只能是insert和update
grant alert all table to zhangsan;//授予zhangsan用戶alert任意表的權(quán)限
撤銷權(quán)限
基本語法同grant,關(guān)鍵字為revoke
查看權(quán)限
select * from user_sys_privs;//查看當(dāng)前用戶所有權(quán)限
select * from user_tab_privs;//查看所用用戶對表的權(quán)限
操作表的用戶的表
select * from zhangsan.tablename
角色
角色即權(quán)限的集合耻台,可以把一個角色授予給用戶
create role myrole;//創(chuàng)建角色
grant create session to myrole;//將創(chuàng)建session的權(quán)限授予myrole
grant myrole to zhangsan;//授予zhangsan用戶myrole的角色
drop role myrole; //刪除角色
權(quán)限傳遞
即用戶A將權(quán)限授予B,B可以將操作的權(quán)限再授予C空另,命令如下:
grant alert table on tablename to zhangsan with admin option;//關(guān)鍵字 with admin option
grant alert table on tablename to zhangsan with grant option;//關(guān)鍵字 with grant option效果和admin類似
同義詞(synonyms)
Oracle的同義詞(synonyms)從字面上理解就是別名的意思盆耽,和視圖的功能類似,就是一種映射關(guān)系.
在Oracle中對用戶的管理是使用權(quán)限的方式來管理的扼菠,也就是說摄杂,如果我們想使用數(shù)據(jù)庫,我們就必須得有權(quán)限循榆,但是如果是別人將權(quán)限授予了我們析恢,我們也是能對數(shù)據(jù)庫進(jìn)行操作的,但是我們必須要已授權(quán)的表的名稱前秧饮,鍵入該表所有者的名稱映挂,所以這就是比較麻煩的,遇到這種情況盗尸,我們該怎么辦呢柑船?創(chuàng)建個Oracle同義詞吧!這樣我們就可以直接使用同義詞來使用表了振劳。
在 user1 下 有表 table1椎组,現(xiàn)在 user2 要使用 table1
grant select on table1 to user2;
select * from user1.table1 ;
create public synonym table1 for user1.table1
select * from table1; //不需要鍵入該表所有者的名稱
同義詞的概念
Oracle數(shù)據(jù)庫中提供了同義詞管理的功能油狂。同義詞是數(shù)據(jù)庫方案對象的一個別名历恐,經(jīng)常用于簡化對象訪問和提高對象訪問的安全性。在使用同義詞時专筷,Oracle數(shù)據(jù)庫將它翻譯成對應(yīng)方案對象的名字弱贼。
與視圖類似,同義詞并不占用實際存儲空間磷蛹,只有在數(shù)據(jù)字典中保存了同義詞的定義吮旅。在Oracle數(shù)據(jù)庫中的大部分?jǐn)?shù)據(jù)庫對象,如表、視圖庇勃、序列檬嘀、存儲過程、包等等责嚷,數(shù)據(jù)庫管理員都可以根據(jù)實際情況為他們定義同義詞鸳兽。
Oracle同義詞的分類
Oracle同義詞有兩種類型,分別是公用public同義詞與私有同義詞
1)公用Oracle同義詞:
由一個特殊的用戶組Public所擁有罕拂。顧名思義揍异,數(shù)據(jù)庫中所有的用戶都可以使用公用同義詞。公用同義詞往往用來標(biāo)示一些比較普通的數(shù)據(jù)庫對象爆班,這些對象往往大家都需要引用衷掷。
2)私有Oracle同義詞:
它是跟公用同義詞所對應(yīng),他是由創(chuàng)建他的用戶所有柿菩。當(dāng)然戚嗅,這個同義詞的創(chuàng)建者,可以通過授權(quán)控制其他用戶是否有權(quán)使用屬于自己的私有同義詞枢舶。
創(chuàng)建同義詞
1)創(chuàng)建公有Oracle同義詞的語法:
create [public] synonym 同義詞名稱 for [username.]objectName渡处;
create public synonym table_name for user.table_name;
2)創(chuàng)建一個遠(yuǎn)程數(shù)據(jù)庫的對象的同義詞
如果要創(chuàng)建一個遠(yuǎn)程的數(shù)據(jù)庫上的某張表的同義詞,需要先創(chuàng)建一個Database Link(數(shù)據(jù)庫連接)來擴展訪問祟辟,然后在使用如下語句創(chuàng)建數(shù)據(jù)庫同義詞:create synonym table_name for table_name@DB_Link;
同義詞擁有如下好處:節(jié)省大量的數(shù)據(jù)庫空間医瘫,對不同用戶的操作同一張表沒有多少差別;擴展的數(shù)據(jù)庫的使用范圍,能夠在不同的數(shù)據(jù)庫用戶之間實現(xiàn)無縫交互;同義詞可以創(chuàng)建在不同一個數(shù)據(jù)庫服務(wù)器上旧困,通過網(wǎng)絡(luò)實現(xiàn)連接醇份。