通過資料庫鏈執行DML所需許可權
對於本地的使用者,執行INSERT操作只需要INSERT許可權,而只有INSERT許可權這對於通過資料庫鏈執行插入操作是不夠的。
看Oracle的管理員手冊是發現了這個問題,以前還確實沒有注意過。
看一個具體的例子,首先在本地建立一個普通使用者,並將表T的INSERT、UPDATE和DELETE許可權授權給這個使用者:
SQL> show user
USER is "TEST"
SQL> create table t (id number);
Table created.
SQL> create user u1 identified by u1;
User created.
SQL> grant create session to u1;
Grant succeeded.
SQL> grant insert, update, delete on t to u1;
Grant succeeded.
SQL> conn u1/u1
Connected.
SQL> insert into test.t values (1);
1 row created.
SQL> update test.t set id = 2;
1 row updated.
SQL> delete test.t;
1 row deleted.
SQL> commit;
Commit complete.
在本地執行,使用者U1可以對T表執行INSERT、UPDATE和DELETE的操作。
下面在遠端建立資料庫鏈,使用U1作為連線使用者:
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
TESTRAC
SQL> create database link test08
2 connect to u1
3 identified by u1
4 using '172.25.13.229/test08';
資料庫連結已建立。
SQL> select * from global_name@test08;
GLOBAL_NAME
--------------------------------------------------------------------------------
TEST08
SQL> insert into test.t@test08 values (1);
insert into test.t@test08 values (1)
*
第 1 行出現錯誤:
ORA-01031: insufficient privileges
ORA-02063: 緊接著 line (起自 TEST08)
SQL> update test.t@test08 set id = 1;
update test.t@test08 set id = 1
*
第 1 行出現錯誤:
ORA-01031: insufficient privileges
ORA-02063: 緊接著 line (起自 TEST08)
SQL> delete test.t@test08;
delete test.t@test08
*
第 1 行出現錯誤:
ORA-01031: insufficient privileges
ORA-02063: 緊接著 line (起自 TEST08)
這是由於通過資料庫鏈訪問遠端物件的時候,Oracle需要查詢許可權來對錶結構進行分析,因此如果是通過資料庫鏈執行DML操作,除了對應的DML許可權外,使用者還需要SELECT許可權。
SQL> conn test/test
Connected.
SQL> grant select on t to u1;
Grant succeeded.
有了SELECT許可權,通過資料庫鏈執行DML就可以順利執行了:
SQL> insert into test.t@test08 values (1);
已建立 1 行。
SQL> update test.t@test08 set id = 2;
已更新 1 行。
SQL> delete test.t@test08;
已刪除 1 行。
SQL> commit;
提交完成。
SQL> select * from test.t@test08;
未選定行
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-612789/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫的許可權管理資料庫
- 資料庫學習:許可權管理資料庫
- Mysql資料庫許可權問題MySql資料庫
- 如何在資料庫中進行RBAC許可權應用資料庫
- 許可權系統:一文搞懂功能許可權、資料許可權
- MySQL資料庫Root許可權MOF方法提權研究MySql資料庫
- 七、許可權管理和資料庫備份資料庫
- PostgreSQL資料庫使用者許可權管理SQL資料庫
- Oracle 資料庫安全許可權配置標準Oracle資料庫
- 授權|取消授權MYSQL資料庫使用者許可權MySql資料庫
- 通過 VirtualApp 實現免 Root 許可權 HookAPPHook
- all許可權使用者無法執行儲存過程儲存過程
- Linux檔案讀、寫、執行許可權Linux
- 普通使用者許可權執行dockerDocker
- [資料庫]MYSQL之授予/查驗binlog許可權資料庫MySql
- Linux資料夾執行許可權不夠怎麼辦?如何處理?Linux
- PostgreSQL_通過schema控制使用者許可權SQL
- 通過 recompose 實現 react router4 許可權React
- 登入失敗,提示“資料庫目錄許可權寫入不足”,可以操作設定資料庫目錄許可權為 777。資料庫
- 報表如何透過引數控制資料許可權
- 我的應用所需許可權都已全部開啟,定位資料依然不準確?
- android 許可權庫EasyPermissionsAndroid
- 通用許可權系統之資料庫表設計資料庫
- 詳解GuassDB資料庫許可權命令:GRANT和REVOKE資料庫
- php執行shell指令碼需要sudo許可權PHP指令碼
- Android 6.0 在執行時請求許可權Android
- 資料分析的許可權控制
- SpringSecurity許可權管理系統實戰—九、資料許可權的配置SpringGse
- mysql 床架新資料庫並分配使用者許可權MySql資料庫
- 【專案實踐】一文帶你搞定頁面許可權、按鈕許可權以及資料許可權
- Android 6.0 執行時許可權管理最佳實踐Android
- 基於RBAC做資料許可權
- linux 檔案、資料夾許可權Linux
- 修改檔案、資料夾許可權
- 往hdfs寫資料無許可權
- 資料許可權技術驗證
- 資料許可權驗證MyBatis版MyBatis
- win10執行軟體提示需要管理員許可權怎麼回事_win10系統怎麼跳過執行軟體需要管理員許可權Win10
- 許可權之選單許可權