通過資料庫鏈執行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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過shell得到資料庫中許可權的指令碼資料庫指令碼
- 資料庫許可權-儲存過程資料庫儲存過程
- MySQL資料庫許可權體系入門(5)---管理資料庫許可權MySql資料庫
- 通過資料庫鏈執行TEXT操作的小bug資料庫
- 資料庫的許可權管理資料庫
- 資料庫學習:許可權管理資料庫
- Mysql資料庫許可權問題MySql資料庫
- 資料許可權
- Docker安全:通過Docker提升許可權Docker
- 透過shell得到資料庫中許可權的指令碼資料庫指令碼
- 【許可權】儲存過程執行時,報ORA-01031許可權不足儲存過程
- ylbtech-許可權管理-資料庫設計-功能許可權管理技術資料庫
- MySQL資料庫許可權體系入門(4)---管理全域性許可權MySql資料庫
- 資料庫安全之許可權與角色資料庫
- 如何在資料庫中進行RBAC許可權應用資料庫
- [PolicyException: 無法獲取所需的許可權。]Exception
- MySQL資料庫許可權體系入門(3)---管理使用者許可權MySql資料庫
- MySQL資料庫Root許可權MOF方法提權研究MySql資料庫
- mysql 管理:mysql 執行許可權(轉)MySql
- Oracle 資料庫安全許可權配置標準Oracle資料庫
- PostgreSQL資料庫使用者許可權管理SQL資料庫
- MySQL之test資料庫預設許可權MySql資料庫
- SQL Server資料庫SA許可權總結SQLServer資料庫
- 系統許可權資料庫設計方案資料庫
- 提取使用者許可權或是不同資料庫使用者許可權的同步資料庫
- 普通使用者許可權執行dockerDocker
- 【Oracle】-【AWR/Stackpack】-AWR(Stackpack)執行許可權Oracle
- SYS執行SQL報錯缺少許可權SQL
- all許可權使用者無法執行儲存過程儲存過程
- 檢視PG資料庫的許可權情況資料庫
- MS SQL資料庫SA許可權入侵的感悟SQL資料庫
- Oracle資料庫的系統和物件許可權Oracle資料庫物件
- oracle資料庫使用者建立、許可權分配Oracle資料庫
- PostgreSQL_通過schema控制使用者許可權SQL
- 通過 VirtualApp 實現免 Root 許可權 HookAPPHook
- MySQL資料庫許可權體系入門(6)---管理表、列及程式相關許可權MySql資料庫
- 報表如何透過引數控制資料許可權
- 資料分析的許可權控制