procedure建立和執行的顯示賦權
song,user1,user2 都有dba的角色
一, 執行sys下的 procedure時 ,必須顯示賦權 grant execute on procedure_name to user_name;
二, 在sys下, 不需要被顯示賦於對像的許可權。 別的使用者需要
三, 執行別的使用者(不包括sys)下的procedure時, 不需要執行使用者的顯示的賦權
證明:
SQL> conn /as sysdba
Connected.
SQL> create or replace procedure t_pro as
2 begin
3 null;
4 insert into user1.t_t values ('a');
5 end;
6 /
Procedure created. --sys使用者 不需要 被顯示給user1.t_t的許可權
SQL> grant dba to song;
Grant succeeded.
SQL> conn song/song
Connected.
SQL> exec sys.t_pro;
BEGIN sys.t_pro; END; --song執行sys的, 執行不了,但是報的錯不是沒有許可權
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'SYS.T_PRO' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
SQL> conn /as sysdba
Connected.
SQL> exec sys.t_pro;
PL/SQL procedure successfully completed.
SQL> show user
USER is "SYS"
SQL> grant execute any procedure to song; --給執行任何procedure的許可權
Grant succeeded.
SQL> conn song/song
Connected.
SQL> exec sys.t_pro;
BEGIN sys.t_pro; END; --還是執行不了,(可以認為給的any procedure不包含sys下的物件)
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'SYS.T_PRO' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
SQL> conn /as sysdba
Connected.
SQL> grant execute on t_pro to song; --顯示賦於執行許可權
Grant succeeded.
SQL> conn song/song
Connected.
SQL> exec sys.t_pro; --成功
PL/SQL procedure successfully completed.
SQL> conn song/song
Connected.
SQL> create or replace procedure t_pro_song as
2 begin
3 null;
4 insert into user1.t_t values ('b');
5 end;
6 /
Warning: Procedure created with compilation errors.
SQL> show error
Errors for PROCEDURE T_PRO_SONG:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/1 PL/SQL: SQL Statement ignored
4/19 PL/SQL: ORA-01031: insufficient privileges --有dba許可權也用不了user1的t_t表
SQL> conn user1/user1
Connected.
SQL> grant insert on t_t to song;
Grant succeeded.
SQL> conn song/song
Connected.
SQL> create or replace procedure t_pro_song as
2 begin
3 null;
4 insert into user1.t_t values ('b');
5 end;
6 /
Procedure created. --顯示給許可權之後,可以
SQL> conn user2/user2
Connected.
SQL> exec song.t_pro_song; --user2 雖沒有顯示賦權,但是可以執行
PL/SQL procedure successfully completed.
SQL> select * from user1.t_t;
NAME
----------
user1
a
a
b
SQL> conn song/song
Connected.
SQL> create or replace procedure t_pro_song_a AUTHID CURRENT_USER as --以AUTHID CURRENT_USER 定義,下面還是可以執行
2 begin
3 null;
4 insert into user1.t_t values ('b');
5 end;
6 /
Procedure created.
SQL> conn user2/user2
Connected.
SQL> exec song.t_pro_song_a;
PL/SQL procedure successfully completed.
SQL> select * from user1.t_t;
NAME
----------
user1
a
a
b
b
by song
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25099483/viewspace-772367/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- idea執行時預設顯示自己建立的jsp方法IdeaJS
- adodb執行Procedure的方法
- linux下面顯示所有正在執行的執行緒Linux執行緒
- 顯示oracle執行時間Oracle
- history命令顯示,操作執行日期
- 執行Java,不顯示控制檯Java
- vue控制dom顯示出現後執行的操作Vue
- django搭建完畢執行顯示hello djangoDjango
- JBOSS執行JSP檔案,頁面顯示如下資訊JBOSS執行JSP檔案,頁面顯示如下JS
- oracle 中如何顯示sql語句的執行時間和sql語句的執行後的當前時間OracleSQL
- 遊戲基礎知識——遊戲的“自我賦權”和“非自我賦權”傾向遊戲
- 【顯式授權】Procedure中無法完成DDL的建表操作的原因探查
- 資料顯示62%的網站仍然執行PHP 5網站PHP
- MYSQL 建立賬戶,並賦予許可權MySql
- jbuildex 執行時不能顯示中文,如何解決?UI
- top -Hp pid 顯示所有的執行緒執行緒
- 授權物件許可權後的授權者顯示問題物件
- Java多執行緒的建立和啟動Java執行緒
- Shell程式設計-建立和執行程式設計
- 使用Executors建立和管理執行緒執行緒
- Ubuntu 建立新的使用者並且賦予特權Ubuntu
- MFC多執行緒的建立,包括工作執行緒和使用者介面執行緒執行緒
- Nginx執行php,顯示“No input file specified. ”的處理方法NginxPHP
- 如何讓Mac的Dock僅顯示正在執行的應用程式?Mac
- 執行緒的建立及執行緒池執行緒
- Jmeter效能測試場景的建立和執行JMeter
- 【Java基礎】:執行緒的建立和啟動Java執行緒
- function.procedure函式下的過程執行問題Function函式
- job中執行帶有引數的procedure 時的寫法
- 執行緒池的建立和使用,執行緒池原始碼初探(篇一)執行緒原始碼
- Android的UI顯示原理之Surface的建立AndroidUI
- pycharm顯示行號PyCharm
- emacs顯示行號Mac
- LightDB/PostgreSQL標準業務建立語句【賦予讀寫許可權和只讀許可權】SQL
- 在DOS視窗執行java命令中文顯示正常,執行javac命令中文亂碼Java
- mysql 建立新使用者 並賦予許可權MySql
- 執行緒池建立執行緒的過程執行緒
- Java 多執行緒之內建鎖與顯示鎖Java執行緒