Oracle之AUTHID CURRENT_USER
生活随笔
收集整理的這篇文章主要介紹了
Oracle之AUTHID CURRENT_USER
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
沒有AUTHID CURRENT_USER表示定義者權限(definer rights),以定義者身份執行;
加上AUTHID CURRENT_USER表示調用者權限(invoker rights),以調用者身份執行。
?
例:
?
1. 創建兩個用戶:xxpo,xxgl
2. 在xxpo下創建一張表:xxpo_authid_test
[c-sharp]?view plaincopy
3. 在xxpo下創建如下兩個procedure
3.1 xxpo_no_authid_test_prc:
[c-sharp]?view plaincopy
3.2 xxpo_has_authid_test_prc:
[c-sharp]?view plaincopy
4. 將兩個procedure的執行權限(EXECUTE)賦予xxgl:
[c-sharp]?view plaincopy
5. 在xxgl分別調用xxpo下面的兩個procedure,查看結果:
[c-sharp]?view plaincopy
由于我們并沒有在xxgl用戶下創建一個名為xxpo_authid_test的表,所以當我們在xxgl用戶下以調用者(xxgl)權限去執行xxpo.xxpo_has_authid_test_prc這個procedure的時候,會報表不能找到(ORA-00942)的錯誤;而以定義者(xxpo)權限去執行則不存在此問題。
---
Authid Current_User 是調用者權限。 oracle DB下面有2種執行的權限:定義者權限和調用者權限。 默認都是定義者權限。聲明Authid Current_User后就是調用者權限。定義者權限的現象是,如果在APPS下創建的procedure,那其他user,只要能執行procedure,都是以apps的名義來執行的。因為APPS是procedure的定義者。 APPS能做什么,那這個procedure就能做什么。調用者權限的現象是,如果在APPS下創建的procedure,如果其他user有權限執行這個procedure,這個procedure所做的內容都是以當前user的名義來做的。如果某個table,只有APPS才有權限修改,那這個procedure在apps下面才執行成功。其他user下是不成功的。
總結
以上是生活随笔為你收集整理的Oracle之AUTHID CURRENT_USER的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: expdp和impdp的用法详解
- 下一篇: nagios监控-多用户管理