国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle數據-庫視圖與權限問題

2019-11-02 14:38:47
字體:
來源:轉載
供稿:網友

   有三個用戶test1,test2,test3, 三個用戶都具有DBA色色權限。

  用TEST1用戶創建一個表T1,并將其查詢權限授予TEST2:

  SQL> create table t1 as select * from all_objects;

  表已創建。

  SQL> grant select on t1 to test2;

  授權成功。

  SQL> create table t1 as select * from all_objects;

  表已創建。

  SQL> grant select on t1 to test2;

  授權成功。

  用TEST2用戶創建一個視圖,視圖的基表是TEST1.T1,并將查詢權限授予TEST3:

  SQL> create view v_t1 as select * from test1.t1;

  視圖已建立。

  SQL> grant select on v_t1 to test3;

  授權成功。

  SQL> create view v_t1 as select * from test1.t1;

  視圖已建立。

  SQL> grant select on v_t1 to test3;

  授權成功。

  TEST3用戶查詢視圖TEST2.V_T1:

  SQL> select * from test2.v_t1 where rownum<1;

  select * from test2.v_t1 where rownum<1

  *

  ERROR 位于第 1 行:

  ORA-01031: 權限不足

  SQL> select * from test2.v_t1 where rownum<1;

  select * from test2.v_t1 where rownum<1

  *

  ERROR 位于第 1 行:

  ORA-01031: 權限不足

  可以看到報了權限不足的錯誤,就算這里TEST3用戶有DBA權限。

  這到底是怎么回事呢?

  其實視圖的權限,有兩點需要引起注意:

  1. 視圖中,類似于定義者權限的存儲過程,是屏蔽了角色權限的。比如如果TEST1沒有顯式地將T1表的SELECT權限給予TEST2,那么TEST2在創建視圖V_T1時也會報ORA-01031錯誤,即使TEST2用戶擁有DBA角色權限。

  2.如果在用戶A的視圖中,引用了其他用戶B的表,用戶A將視圖的訪問權限給予用戶C,那么就變相地將用戶B的表的訪問權限給予了用戶C,因

11個字網名[www.la240.com/html2017/1/1/]
此,用戶A必須有將用戶B的表的訪問權限轉授用戶C的權限,也就是用戶B在授予A權限時,必須使用with grant option。

  顯然這里正是由于第2點的原因,導致用戶TEST3不能訪問視圖。用戶TEST1執行下面的操作,將解決這個問題:

  SQL> grant select on t1 to test2 with grant option;

  授權成功。

  SQL> grant select on t1 to test2 with grant option;

  授權成功。

  對于視圖的UPDATE,DELETE權限,同樣是如此。

  在測試時,有一個現象,有點意思。就是如果用戶TEST2沒有顯式地把V_T1的SELECT權限授予TEST3,而TEST3在有SELECT ANY TABLE或DBA權限時,則查詢這個視圖時不會報權限不足的錯誤。由于有SELECT ANY TABLE權限的存在,所有的用戶表都可以被訪問。但是顯式授予表的權限時,似乎表的權限有更高的優先級,并且沒有跟系統權限和角色權限進行結合?;蛘甙姹静煌?,表現得不一樣,在我的測試中,是Oracle 9.2.0.8 for Windows。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥城市| 江孜县| 玛曲县| 禹州市| 梁平县| 罗平县| 兴和县| 泽州县| 娱乐| 龙游县| 中牟县| 安远县| 古蔺县| 手游| 剑阁县| 玉田县| 皋兰县| 兴隆县| 彰化市| 保康县| 四子王旗| 六盘水市| 靖宇县| 扶绥县| 运城市| 柘荣县| 台江县| 达尔| 和顺县| 仙居县| 大港区| 大新县| 浙江省| 孝昌县| 巫溪县| 赣州市| 自贡市| 通江县| 崇信县| 朝阳区| 弥勒县|