oracle开发权限管理解决方案

需求

      公司想规范oracle的权限管理,实现同一个数据有两个用户维护,一个低权用户一个高权用户, 低权用户只能增删改查,无法更改表建构创建表,给普通开发使用,高权用户可以改表结构 创建表,给项目经理或者架构师使用。 

实现思路

       假设高权用户是gao,低权用户是di,通过给gao用户表空间的CONNECT,RESOURCE角色,给di用户CONNECT角色和创建同义词的权限,把gao用户的所有表找出来给di用户增删改查权限,然后再给di再创建gao用户所有表的同义词,以后gao用户创建表,需要给di用户设置该表增删改查权限,并且di用户要再创建一个同义词。

操作

oracle版本:11.2

高权用户名:ANYTXN_V2_DEV(已存在,并且有很多表)

低权用户:    ANYTXN_V2_DEV_RD

表空间名称:ANYTXN_V2_DEV_DATA

 

#登陆system用户创建低权用户
create user anytxn_v2_dev_rd identified by "jrx12345" default tablespace ANYTXN_V2_DEV_DATA  temporary tablespace ANYTXN_DEV_DATA_TEMP profile DEFAULT;
GRANT CONNECT TO anytxn_v2_dev_rd;
alter user anytxn_v2_dev_rd quota unlimited on ANYTXN_V2_DEV_DATA;
grant create synonym to anytxn_v2_dev_rd;

#登录高权用户查询所有的表,生成授权sql
select 'GRANT SELECT,delete,insert,update ON ' || table_name || ' to anytxn_v2_dev_rd;'  from user_tables;
#把上面命令生成的sql都执行一遍

#查询所有的表生成创建同义词的所有sql
select 'create synonym ' || table_name || ' for anytxn_v2_dev.'||table_name||';' from user_tables ;
#登录低权用户执行上面查到的sql,创建所有表的同义词

#如果涉及到序列再需要查询高权用户得所有序列,然后执行相关授权sql
select 'GRANT SELECT ON ' || sequence_name || ' to cmbc_biz_rd;'  from user_sequences;

#登陆低权用户执行所有创建序列 同义词得sql
select 'create synonym ' || sequence_name || ' for cmbc_biz.'||sequence_name||';' from user_sequences;




 

单表权限维护

创建表用高权用户创建,创建后授权表的增删改查权限给低权用户

#GRANT SELECT,delete,insert,update ON SETTLEMENT_LOG to anytxn_v2_dev_rd;

登陆低权用户创建相应表的同义词

create synonym SETTLEMENT_LOG for anytxn_v2_dev.SETTLEMENT_LOG;

撤销权限

REVOKE SELECT,delete,insert,update ON SETTLEMENT_LOG FROM anytxn_v2_dev_rd;

删除同义词

DROP SYNONYM SETTLEMENT_LOG;

 

多表批量维护

通过高权用户批量授权表

select 'GRANT SELECT,delete,insert,update ON ' || table_name || ' to anytxn_v2_dev_rd;'  from user_tables;

执行上述命令生成的所有sql

名称以copy1结尾的表会授权失败,需要把表名加上双引号执行

 

批量创建同义词

高权用户执行select 'create synonym ' || table_name || ' for anytxn_v2_dev.'||table_name||';' from user_tables ;

把生成的sql都在低权用户执行

 

批量撤销权限

高权用户select 'REVOKE SELECT,delete,insert,update ON ' || table_name || ' from anytxn_v221_rd ;' from user_tables;

执行上述命令生成的sql

批量删除同义词

高权用户select 'drop synonym '||synonym_name||';' from user_synonyms

把生成的sql在低权用户执行

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值