oracle表的訪問許可權
『壹』 ORACLE資料庫中的許可權和角色
ORACLE資料庫中的許可權和角色
Oracle資料庫是一種大型關系型的資料庫,我們知道當使用一個資料庫時,僅僅能夠控制哪些人可以訪問資料庫,哪些人不能訪問資料庫是無法滿足資料庫訪問控制的。DBA需要通過一種機制來限制用戶可以做什麼,不能做什麼,這在Oracle中可以通過為用戶設置許可權來實現。許可權就是用戶可以執行某種操作的權利。而角色是為了方便DBA管理許可權而引入的一個概念,它實際上是一個命名的許可權集合。
1 許可權
Oracle資料庫有兩種途徑獲得許可權,它們分別為:
① DBA直接向用戶授予許可權。
② DBA將許可權授予角色(一個命名的包含多個許可權的集合),然後再將角色授予一個或多個用戶。
使用角色能夠更加方便和高效地對許可權進行管理,所以DBA應該習慣於使用角色向用戶進行授予許可權,而不是直接向用戶授予許可權。
Oracle中的許可權可以分為兩類:
•系統許可權
•對象許可權
1.1 系統許可權
系統許可權是在資料庫中執行某種操作,或者針對某一類的對象執行某種操作的權利。例如,在資料庫中創建表空間的權利,或者在任何模式中創建表的權利,這些都屬於系統許可權。在Oracle9i中一共提供了60多種許可權。
系統許可權的權利很大,通常情況下:
① 只有DBA才應當擁有alter database系統許可權,該許可權允許用戶對資料庫物理結構和可用性進行修改。
② 應用程序開發者一般應該擁有Create Table、Create View和Create Type等系統許可權,用於創建支持前端的資料庫模式對象。
③ 普通用戶一般只具有Create session系統許可權(可以通過Connection角色獲得),只有Create Session系統許可權的用戶才能連接到資料庫
④ 只有具有Grant Any PRivilege系統許可權用戶,或者獲取了具有With Admin Option選項的系統許可權的用戶,才能夠成為其它用戶授予許可權。
1.2對象許可權
對象許可權是針對某個特定的模式對象執行操作的權利。只能針對模式對象來設置和管理對象許可權。
對於模式對象:表、視圖、序列、存儲過程、存儲函數、包都可以對象設置許可權。不同類型模式對象具有不同的對象許可權。比如,表、視圖等對象具有查詢(Select)、修改(Update)、刪除(Delete)等對象許可權,而存儲過程、存儲函數等對象則具有執行(Execute)等對象許可權。
但是並不是所有的模式對象都可以設置對象許可權。比如簇、索引、觸發器以及資料庫鏈接等模式就不具有對象許可權。這些模式對象的訪問控制是通過相應的.系統許可權來實現的,比如,要對索引進行修改,必須擁有Alter Any Index系統許可權。
用戶自動擁有他的模式中所有對象的全部對象許可權,他可以將這些對象許可權授予其他的用戶或角色。比如,Test1用戶創建了一個表Table1,在沒有授權的情況下,用戶Test2不能查詢、修改、刪除這個表。如果Test1將ETP表的Select對象許可權授予了Test2,則該用戶就可以查詢Table1表了。如果在為其它用戶授予對象許可權時用了With Grant Option選項,被授予許可權的用戶還可以將這個許可權在授予其他用戶。
2 角色
2.1角色的概念
角色就是多個相關許可權的命名集合。通過角色來進行對用戶授予許可權,可以大大簡化DBA的工作量。比如,處於統一部門中的30多個用戶都需要訪問資料庫中的一系列表,DBA可以將這些表的中合適的對象許可權授予一個角色,然後在把這個角色授予這些用戶,這樣進行操作要比為沒有用戶進行授權要便捷多了,而且要對這些用戶的許可權進行統一修改,只需要修改角色的許可權即可。
2.2角色的優點
通過角色為用戶授予許可權,而不是直接向各個用戶授權,具有以下優點:
•簡化許可權管理 DBA將用戶群分類,然後為每一類用戶創建角色,並將該角色授予這類用戶所需要的許可權,最後在將改角色授予該類中的各個用戶。這樣不僅簡化了授權操作,而且當這類用戶的許可權需求發生改變時,只需要把角色的許可權進行改動,而不必修改每一位用戶的許可權。
•動態許可權管理 角色可以被禁用或激活。當角色被禁止使用時,擁有該角色的用戶不再擁有授予改角色的許可權了。這樣就可以對多個用戶的許可權進行動態控制了。
•靈活的編程能力 角色是存儲在數據字典中的,並且可以為角色設置口令。這樣就能夠在應用程序中對角色進行控制。比如禁用或者激活等操作。
下面以Oracle9i為例,給出具體的實現用戶授權:
(1)設定各種角色,及其許可權
CREATE ROLE checkerrole DENTIFIEDBYxm361001;
CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;
GRANT SELECT,UPDATE ON
account.paytable TO checkerrole;
GRANT CONNECT TO defaultrole;
(2)創建用戶
CREATE USER xiaoli IDENTIFIEDBY xiaoli;
(3)授權
GRANT checkerrole TO xiaoli;
GRANT defaultrole TO xiaoli;
(4)設定用戶預設的角色
ALTER USER xiaoli DEFAULTROLE defaultrole;
(5)注冊過程
CONNECT xiaoli/xiaoli@oracle
此時用戶只有其預設角色的許可權。
(6)激活角色
SET ROLE checkerrole IDENTIFIEDBY xm361001;
----操作成功後,xiaoli擁有checkerrole的許可權。
----這里的角色和口令是固定的,在應用系統中可以由應用管理人員自行設置則更為方便安全
;『貳』 Oracle用戶許可權表的管理方法
我們將通過介紹命令的方式 談談Oracle用戶許可權表的管理方法 希望對大家有所幫助岩祥蠢
我們將從創建Oracle用戶許可權表 開始談起 然後講解登陸等一般性動作 使大家對Oracle用宴埋戶許可權表有個深入的了解
一 創建
sys;//系統管理員 擁有最高許可權
system;//本地管理員 次高許可權
scott;//普通用戶 密碼默認為tiger 默認未解鎖
sys;//系統管理員 擁有最高許可權
system;//本地管理員 次高許可權
scott;//普通用戶 密碼默認為tiger 默認未解鎖
二 登陸
sqlplus / as sysdba;//登陸sys帳戶
sqlplus sys as sysdba;//同上
sqlplus scott/tiger;//登陸普通用戶scott
sqlplus / as sysdba;//登陸sys帳戶
sqlplus sys as sysdba;//同上
sqlplus scott/tiger;//登陸普通用戶scott
三 管理用戶
create user zhangsan;//在管理員帳戶下 創建用戶zhangsan
alert user scott identified by tiger;//修改密碼
create user zhangsan;//在管理員帳戶下 創建用戶zhangsan
alert user scott identified by tiger;//修改密碼
四 授予許可權
默認粗陪的普通用戶scott默認未 解鎖 不能進行那個使用 新建的用戶也沒有任何許可權 必須授予許可權
/*管理員授權*/
grant create session to zhangsan;//授予zhangsan用戶創建session的許可權 即登陸許可權
grant unlimited session to zhangsan;//授予zhangsan用戶使用表空間的許可權
grant create table to zhangsan;//授予創建表的許可權
grante drop table to zhangsan;//授予刪除表的許可權
grant insert table to zhangsan;//插入表的許可權
grant update table to zhangsan;//修改表的許可權
grant all to public;//這條比較重要 授予所有許可權(all)給所有用戶(public)
/*管理員授權*/
grant create session to zhangsan;//授予zhangsan用戶創建session的許可權 即登陸許可權
grant unlimited session to zhangsan;//授予zhangsan用戶使用表空間的許可權
grant create table to zhangsan;//授予創建表的許可權
grante drop table to zhangsan;//授予刪除表的許可權
grant insert table to zhangsan;//插入表的許可權
grant update table to zhangsan;//修改表的許可權
grant all to public;//這條比較重要 授予所有許可權(all)給所有用戶(public)
oralce對許可權管理比較嚴謹 普通用戶 之間也是默認不能互相訪問的 需要互相授權
/*oralce對許可權管理比較嚴謹 普通用戶之間也是默認不能互相訪問的*/
grant select on tablename to zhangsan;//授予zhangsan用戶查看指定表的許可權
grant drop on tablename to zhangsan;//授予刪除表的許可權
grant insert on tablename to zhangsan;//授予插入的許可權
grant update on tablename to zhangsan;//授予修改表的許可權
grant insert(id) on tablename to zhangsan;
grant update(id) on tablename to zhangsan;//授予對指定表特定欄位的插入和修改許可權 注意 只能是insert和update
grant alert all table to zhangsan;//授予zhangsan用戶alert任意表的許可權
/*oralce對許可權管理比較 嚴謹 普通用戶之間也是默認不能互相訪問的*/
grant select on tablename to zhangsan;//授予zhangsan用戶查看指定表的許可權
grant drop on tablename to zhangsan;//授予刪除表的許可權
grant insert on tablename to zhangsan;//授予插入的許可權
grant update on tablename to zhangsan;//授予修改表的許可權
grant insert(id) on tablename to zhangsan;
grant update(id) on tablename to zhangsan;//授予對指定表特定欄位的插入和修改許可權 注意 只能是insert和update
grant alert all table to zhangsan;//授予zhangsan用戶alert任意表的許可權
五 撤銷許可權
基本語法同grant 關鍵字為revoke
基本語法同grant 關鍵字為revoke
六 查看許可權
select * from user_sys_privs;//查看當前用戶所有許可權
select * from user_tab_privs;//查看所用用戶對表的許可權
select * from user_sys_privs;//查看當前用戶所有許可權
select * from user_tab_privs;//查看所用用戶對表的許可權
七 操作表的用戶的表
/*需要在表名前加上用戶名 如下*/
select * from zhangsan tablename
/*需要在表名前加上用戶名 如下*/
select * from zhangsan tablename
八 許可權傳遞
即用戶A將許可權授予B B可以將操作的許可權再授予C 命令如下
grant alert table on tablename to zhangsan with admin option;//關鍵字 with admin option
grant alert table on tablename to zhangsan with grant option;//關鍵字 with grant option效果和admin類似
grant alert table on tablename to zhangsan with admin option;//關鍵字 with admin option
grant alert table on tablename to zhangsan with grant option;//關鍵字 with grant option效果和admin類似
九 角色
角色即許可權的集 合 可以把一個角色授予給用戶
create role myrole;//創建角色
grant create session to myrole;//將創建session的許可權授予myrole
grant myrole to zhangsan;//授予zhangsan用戶myrole的角色
drop role myrole;刪除角色
/*但是有些許可權是不能授予給角色的 比如unlimited tablespace和any關鍵字*/
lishixin/Article/program/Oracle/201311/17543
『叄』 oracle 怎麼查看錶的許可權
方法1:
根據指定用戶名獲喚歷得對應用戶所盯尺擁有許可權的表
SELECT table_name, owner FROM all_tables WHERE owner = 'SCOTT';
方法2:
通過tab視圖獲得當前登錄用戶所有表和視圖,通過tabletype過濾獲和則搜得所有表
SELECT * FROM tab WHERE tabtype = 'TABLE';
『肆』 oracle 怎麼查看錶的許可權
沒有dba的許可權,只能查看你自己的表空間的大小等悶判.
只能查看v$以user開頭的視圖,也就是你自己用戶下的一些相關的表空間,角色,對象等.
例如樓上列舉的哪些
我給你解釋一下他的哪些意思吧
select
*
from
user_tablespaces;就是查看你自己能悄數訪問的表空間
select
*
from
user_tab_partitions;查看你自己用戶下表分區
select
*
from
user_extents;查看你自己用戶下的區
select
*
from
user_indexes;查看你自啟罩首己用戶所能訪問的索引
select
*
from
user_ind_partitions;
查看自己用戶下的索引分區
『伍』 oracle如何查看用戶和許可權
在 Oracle 中查看用戶和它們的許可權,可以使用以下數據改帶隱字典視圖:
ALL_USERS:顯示當前用戶可以訪問的所有資料庫用戶的信息。
USER_USERS:顯示當前用戶擁有的資料庫用戶的信息。
DBA_USERS:顯示資料庫中所有資料庫用戶的信息(僅供 DBA 訪問)。
ALL_TAB_PRIVS:顯示當前用戶可以核廳訪問的所有數據表的行升許可權。
USER_TAB_PRIVS:顯示當前用戶擁有的數據表許可權。
DBA_TAB_PRIVS:顯示資料庫中所有數據表的許可權(僅供 DBA 訪問)
要查看特定用戶的許可權,您可以使用以下視圖:
『陸』 賦予oracle資料庫中某一用戶表許可權的問題
開通其中2張表的查詢許可權,方法如下:飢衫
grant select on bas_checkcycle to jdc;這個是整個語句。
語句分析:
grant select on bas_checkcycle to jdc;
這個顏色為執行語句。
這個顏色是數據表。
這個顏色是用戶;就是需要許可權的用戶。
下面這個是查看,更新,刪除,增加的許可權都開啟。
grant select,update,delete,insert on UserTagPool to [app_webservice];
grant select,update,delete,insert on UserTagPoolMap to [app_webservice];
(6)oracle表的訪問許可權擴展閱讀
Oracle許可權管理
許可權分類:
系統許可權:系統規定用戶使用數據爛含腔庫的許可權。(系統許可權是對用戶而言)。
實體許可權:某種許可權用戶對其它用戶的表或視圖的存取許可權。(是針對表或視圖而言的)。
系統許可權分類:
DBA: 擁有全部特權,是系統最高許可權,只有DBA才可以創建資料庫結構。
RESOURCE:擁有Resource許可權的用戶只可以創建實體,不可以創建資料庫結構。
CONNECT:擁有Connect許可權的用戶只可以登錄Oracle,不可以老棗創建實體,不可以創建資料庫結構。
『柒』 oracle的grant語句,一次只能授權一張表的訪問許可權嗎
grant語句,一次只能對一個對象進行賦權;不能同時對兩個表進行賦權;但可以同時賦權多個不同的許可權;如,grant select,update,insert on test_null to sys;
舉例實踐如下:
1、多表同時賦權,會產生報錯信息。
(7)oracle表的訪問許可權擴展閱讀
1、給資料庫用戶授權(對象為用戶表)
GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}
privilege包含,select:查詢、insert:插入、update:更新、delete:刪除、all:所有
2、grant select,insert,update on tablename to public;
給所有用戶授予查春絕詢、插入、更新tablename表的許可權
revoke select,insert,update on tablename from public;//收回所有用戶查詢、插入、更新tablename表的許可權
object包含,table:敬或表、view:亮森伍視圖、sequence:序列、index:索引
3、grant select,insert,update on tablename,viewname,sequencename,indexname to public;
1)public:對所有用戶開放許可權
2)GROUP groupname:對該組所有用戶開放許可權
3)username:對指定用戶開放許可權
參考資料
ORACLE官網-ORACLE GRANT
『捌』 oracle的grant語句,一次只能授權一張表的訪問許可權嗎
grant語句,一次只能對一個對象進行賦權;不能同時對兩個表進行賦權;但可以同時賦權多個不同的許可權;如,grant select,update,insert on test_null to sys;
舉例實踐如下:
1、多表同時賦權,會產生報錯信息。
(8)oracle表的訪問許可權擴展閱讀
1、給資料庫用戶授權(對象為用亮森伍戶表)
GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}
privilege包含,select:查詢、insert:插入、update:更新、delete:刪除、all:所有
2、grant select,insert,update on tablename to public;
給所有用戶授予查詢、插入、更新tablename表的許可權
revoke select,insert,update on tablename from public;//收回所有用戶查詢、插入、更新tablename表的權春絕限
object包含,table:表、view:視圖、sequence:序列、index:索引
3、grant select,insert,update on tablename,viewname,sequencename,indexname to public;
1)public:對所有用戶開放許可權
2)GROUP groupname:對該組所有用戶開放許可權
3)username:對指定用敬或戶開放許可權
參考資料
ORACLE官網-ORACLE GRANT
『玖』 oracle資料庫,只有訪問視圖許可權,沒有訪問表許可權
視圖里邊的表也是該用戶下的,去掉表的授權,視圖不受影響;如果里邊的表是其它用戶,需要 with grant option;
sqlplus / as sysdba
create table t1(f1 number);
create view v1 as select * from t1;
create user cc identified by wcycc;
grant connect to cc;
grant select on v1 to cc;
conn cc/wcycc
select * from sys.v1;
『拾』 oracle無法訪問dba表
Oracle的DBA表空則雹間是特殊的表空間,它僅僅是內置的資料庫的字典表的容器。因此無法使用sqlplus編輯器或其它任何sql語句查看其中的表改盯正內容,也無法直接訪問它們。另外,由於dba表空間是只讀的,因此無法向它添加任何錶,也無法在其中創建新的表。但是,核悔Oracle提供了一些內部視圖,用戶可以通過這些內部視圖來查看存儲在dba表空間中的表和信息,以及運行一些必要的操作。