Oracle之AUTHID CURRENT_USER
沒(méi)有AUTHID CURRENT_USER表示定義者權(quán)限(definer rights),以定義者身份執(zhí)行;
加上AUTHID CURRENT_USER表示調(diào)用者權(quán)限(invoker rights),以調(diào)用者身份執(zhí)行。
?
例:
?
1. 創(chuàng)建兩個(gè)用戶:xxpo,xxgl
2. 在xxpo下創(chuàng)建一張表:xxpo_authid_test
[c-sharp]?view plaincopy
3. 在xxpo下創(chuàng)建如下兩個(gè)procedure
3.1 xxpo_no_authid_test_prc:
[c-sharp]?view plaincopy
3.2 xxpo_has_authid_test_prc:
[c-sharp]?view plaincopy
4. 將兩個(gè)procedure的執(zhí)行權(quán)限(EXECUTE)賦予xxgl:
[c-sharp]?view plaincopy
5. 在xxgl分別調(diào)用xxpo下面的兩個(gè)procedure,查看結(jié)果:
[c-sharp]?view plaincopy
由于我們并沒(méi)有在xxgl用戶下創(chuàng)建一個(gè)名為xxpo_authid_test的表,所以當(dāng)我們?cè)趚xgl用戶下以調(diào)用者(xxgl)權(quán)限去執(zhí)行xxpo.xxpo_has_authid_test_prc這個(gè)procedure的時(shí)候,會(huì)報(bào)表不能找到(ORA-00942)的錯(cuò)誤;而以定義者(xxpo)權(quán)限去執(zhí)行則不存在此問(wèn)題。
---
Authid Current_User 是調(diào)用者權(quán)限。 oracle DB下面有2種執(zhí)行的權(quán)限:定義者權(quán)限和調(diào)用者權(quán)限。 默認(rèn)都是定義者權(quán)限。聲明Authid Current_User后就是調(diào)用者權(quán)限。定義者權(quán)限的現(xiàn)象是,如果在APPS下創(chuàng)建的procedure,那其他user,只要能執(zhí)行procedure,都是以apps的名義來(lái)執(zhí)行的。因?yàn)锳PPS是procedure的定義者。 APPS能做什么,那這個(gè)procedure就能做什么。調(diào)用者權(quán)限的現(xiàn)象是,如果在APPS下創(chuàng)建的procedure,如果其他user有權(quán)限執(zhí)行這個(gè)procedure,這個(gè)procedure所做的內(nèi)容都是以當(dāng)前user的名義來(lái)做的。如果某個(gè)table,只有APPS才有權(quán)限修改,那這個(gè)procedure在apps下面才執(zhí)行成功。其他user下是不成功的。
總結(jié)
以上是生活随笔為你收集整理的Oracle之AUTHID CURRENT_USER的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: expdp和impdp的用法详解
- 下一篇: nagios监控-多用户管理