Oracle-分配用户只读存储过程权限

系统新来了系统运维人员,要求创建数据库账号,只分配对表,视图,存储程序有只读权限

因为表和视图权限接触比较频繁,所以今天花点时间整理下关于存储过程的权限

关于ORACLE账号的权限问题,一般分为两种权限:

          

      系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、创建存储过程等

      对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等

像这种查看存储过程定义的权限为对象权限,但是我们还是首先来看看关于存储过程的系统权限吧:

上图所示关于存储过程的系统权限一共有六种:

CREATE PROCEDURE、创建存储程序

CREATE ANY PROCEDURE、 创建任何存储程序

ALTER ANY PROCEDURE、更改任何存储程序

DROP ANY PROCEDURE、删除任何存储程序

EXECUTE ANY PROCEDURE、执行任何存储程序

DEBUG ANY PROCEDURE.查看定义任何存储程序

做个试验验证下存储过程的对象权限

将STG用户下的存储程序FP_SO的权限赋给新建用户ZMM,ZMM初始赋给的权限有connect和resource

从上图所示:存储程序的对象全乡有EXECUTE和DEBUG两种:

试着将所有的权限回收,然后单独赋予ZMMexecute和debug权限

1,REVOKE ALL ON FP_SO FROM ZMM;

     GRANT EXECUTE ON FP_SO TO ZMM;

2,REVOKE ALL ON FP_SO FROM ZMM;

    GRANT EXECUTE ON FP_SO TO ZMM;

经验证,execute有查看和执行的权限

           debug只有查看的权限

所以,只需要授予存储过程的DEBUG权限给某个用户,就可以实现只授予用户查看存储过程定义的权限,而限制用户修改、执行存储过程。从而达到只授权用户查看存储过程定义的权限。

不用纠结包和包体,只要赋予相关存储过程权限,包和包体都有相关的权限

原文地址:https://www.cnblogs.com/guipeng/p/7027382.html