中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle中怎么只授予用戶查看存儲過程定義的權限

發布時間:2021-09-18 18:32:25 來源:億速云 閱讀:797 作者:小新 欄目:數據庫

這篇文章主要介紹了oracle中怎么只授予用戶查看存儲過程定義的權限,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

關于ORACLE賬號的權限問題,一般分為兩種權限:

系統權限: 允許用戶執行特定的數據庫動作,如創建表、創建索引、創建存儲過程等

對象權限: 允許用戶操縱一些特定的對象,如讀取視圖,可更新某些列、執行存儲過程等

像這種查看存儲過程定義的權限為對象權限,但是我們還是首先來看看關于存儲過程的系統權限吧:

PRIVILEGE NAME                                       PROPERTY  --------- ---------------------------------------- ----------       -140 CREATE PROCEDURE                                  0       -141 CREATE ANY PROCEDURE                              0       -142 ALTER ANY PROCEDURE                               0       -143 DROP ANY PROCEDURE                                0       -144 EXECUTE ANY PROCEDURE                             0       -241 DEBUG ANY PROCEDURE                               0

如上所示,關于存儲過程的系統權限一般有六種: CREATE PROCEDURE、CREATE ANY PROCEDURE、 ALTER ANY PROCEDURE、DROP ANY PROCEDURE、 EXECUTE ANY PROCEDURE、DEBUG ANY PROCEDURE. 那么關于存儲過程的對象權限又有那些呢? 如下例子所示,在用戶ESCMUSER下創建存儲過程PROC_TEST

CREATE OR REPLACE PROCEDURE ESCMUSER.PROC_TEST  AS  BEGIN     DBMS_OUTPUT.PUT_LINE('It is only test');  END;

使用system用戶創建用戶TEMP,如下所示

SQL> create user temp identified by temp;  User created.  SQL> grant connect,resource to temp;  Grant succeeded.

在用戶ESCMUSER下將存儲過程PROC_TEST的所有權限授予給用戶TEMP。 那么我們發現存儲過程的對象權限只有EXECUTE、DEBUG權限

SQL> COL GRANTEE FOR A12;  SQL> COL TABLE_NAME FOR A30;  SQL> COL GRANTOR FOR A12;  SQL> COL PRIVILEGE FOR A8;  SQL> SELECT * FROM USER_TAB_PRIVS_MADE WHERE GRANTEE='TEMP';   GRANTEE      TABLE_NAME              GRANTOR      PRIVILEGE               GRA HIE  ---------- --------------------- ------------ --------------------------- --- ---  TEMP         PROC_TEST                ESCMUSER     DEBUG                   NO  NO  TEMP         PROC_TEST                ESCMUSER     EXECUTE                 NO  NO   SQL>

oracle中怎么只授予用戶查看存儲過程定義的權限

將存儲過程PORC_TEST的權限從TEMP用戶收回,然后授予用戶TEMP關于存儲過程PROC_TEST的DEBUG權限

SQL>REVOKE ALL ON PROC_TEST FROM TEMP;  SQL>GRANT DEBUG ON PROC_TEST TO TEMP;

那么TEMP用戶此時執行存儲過程報權限不足

SQL> SET SERVEROUT ON;  SQL> EXEC escmuser.proc_test;  begin escmuser.proc_test; end;  ORA-06550: line 2, column 16:  PLS-00904: insufficient privilege to access object ESCMUSER.PROC_TEST  ORA-06550: line 2, column 7:  PL/SQL: Statement ignored

此時,如果修改存儲過程PROC_TEST就會ORA-01031權限不足問題。但是你可以在PL/SQL Developer工具或使用下面視圖查看存儲過程的定義。如下所示。

SELECT * FROM ALL_SOURCE WHERE NAME='PROC_TEST'

所以,只需要授予存儲過程的DEBUG權限給某個用戶,就可以實現只授予用戶查看存儲過程定義的權限,而限制用戶修改、執行存儲過程。從而達到只授權用戶查看存儲過程定義的權限。不過這樣實現,總讓我感覺有點怪怪的。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“oracle中怎么只授予用戶查看存儲過程定義的權限”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资阳市| 如东县| 淮北市| 讷河市| 永善县| 楚雄市| 黄龙县| 额济纳旗| 东源县| 花莲市| 怀远县| 彭泽县| 自治县| 龙口市| 来宾市| 龙川县| 泸州市| 涟源市| 平武县| 夹江县| 鲁山县| 随州市| 怀仁县| 宁强县| 莱西市| 时尚| 雅江县| 迁西县| 岗巴县| 洞头县| 宕昌县| 寿宁县| 湘西| 枞阳县| 洛川县| 博客| 霍邱县| 柳江县| 楚雄市| 石屏县| 隆昌县|