国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - 如何實現只授予用戶查看存儲過程定義的權限

如何實現只授予用戶查看存儲過程定義的權限

2019-12-20 15:24lijiao Oracle

本文對如何授予某個用戶只能查看某些存儲過程的定義權限,而不能讓用戶去修改、執行存儲過程,進行了梳理和總結,供大家參考。

有個網友問我,如何授予某個用戶只能查看某些存儲過程的定義權限,而不能讓用戶去修改、執行存儲過程。看似簡單的問題,卻因為從沒有碰到這樣的需求。花了點時間才梳理、總結清楚。

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

?
1
2
3
4
5
6
7
8
9
CREATE OR REPLACE PROCEDURE ESCMUSER.PROC_TEST
 
AS
 
BEGIN
 
 DBMS_OUTPUT.PUT_LINE('It is only test');
 
END;

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

?
1
2
3
4
5
6
7
SQL> create user temp identified by temp;
 
User created.
 
SQL> grant connect,resource to temp;
 
Grant succeeded.

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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>

 如何實現只授予用戶查看存儲過程定義的權限

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

?
1
2
3
SQL>REVOKE ALL ON PROC_TEST FROM TEMP;
 
SQL>GRANT DEBUG ON PROC_TEST TO TEMP;

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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工具或使用下面視圖查看存儲過程的定義。如下所示。

?
1
SELECT * FROM ALL_SOURCE WHERE NAME='PROC_TEST'

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

以上就是小編為大家整理的如何實現只授予用戶查看存儲過程定義的權限,希望可以對大家的學習能有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲日韩中文字幕在线播放 | 中文字幕av网站 | 午夜成人免费视频 | 成人在线免费观看 | 国产精品久久久久久久久晋中 | 国产精品自拍视频 | www.国产视频| 欧美激情在线精品一区二区三区 | 天天综合网网欲色 | 天天操网 | 欧美精品成人一区二区三区四区 | 91精品国产综合久久福利软件 | 国产高清在线精品一区二区三区 | 7799精品天天综合网 | 色屁屁影院 | 午夜精品久久久久久久男人的天堂 | 99热激情 | 99亚洲精品 | 激情五月婷婷综合 | 精品国产乱码久久久久久1区2区 | 免费精品 | h漫在线观看 | 成人h漫在线观看 | 国产高清av在线一区二区三区 | 亚洲一区二区在线视频 | 欧美亚洲第一页 | 中文字幕91| 97天堂| 高清在线一区 | 国产精品自产拍在线观看桃花 | 在线观看国产视频 | 亚洲一区二区三区视频 | 欧美日韩高清在线 | 色网站在线观看 | 久久久久高清视频 | 超碰在线99| 高清国产一区二区三区 | 午夜成人免费视频 | 亚洲福利一区二区 | 亚洲国产精品久久久 | 亚洲区视频 |