需求:
赋予用户APPREAD只有查看所有存储过程和触发器的权限,但是不能够对其进行执行、修改或删除。
Prompt User APPREAD;
--
-- APPREAD (User)
--
GRANT CONNECT TO APPREAD;
GRANT RESOURCE TO APPREAD;
grant ADMINISTER DATABASE TRIGGER to APPREAD;
GRANT DEBUG ANY PROCEDURE TO APPREAD;
只可以查看到其他用户的存储过程和触发器,对其进行执行、删除、修改、重建都会报错权限不足。
如果只对某个存储过程授权:
GRANT DEBUG ON PROC_TEST TO APPREAD;
与PROCEDURE相关的权限:
select * from session_privs where PRIVILEGE like '%PROCEDURE%';
PRIVILEGE
----------------------------------------
CREATE PROCEDURE (在自己模式下创建存储过程)
CREATE ANY PROCEDURE (在任何模式中创建存储过程)
ALTER ANY PROCEDURE (在任何模式中修改存储过程、函数或包)
DROP ANY PROCEDURE (在任何模式中删除存储过程、函数或包)
EXECUTE ANY PROCEDURE (执行任何模式中的过程或函数)
DEBUG ANY PROCEDURE (在任何模式中查看存储过程的定义)
已选择 6 行。
与TRIGGER相关的权限:
select * from session_privs where PRIVILEGE like '%TRIGGER%';
PRIVILEGE
----------------------------------------
CREATE TRIGGER
CREATE ANY TRIGGER
ALTER ANY TRIGGER
DROP ANY TRIGGER
ADMINISTER DATABASE TRIGGER
已选择 5 行。
参考:
https://www.cnblogs.com/kerrycode/p/4580256.html
https://www.cnblogs.com/jyzhao/p/13391196.html