在实际生产中有这样的需求:

业务用户A有比较大的权限,外部访问数据库,如果通过A,安全隐患较多,所以需要创建一个用户B,B只能查询A拥有的表或视图等对象,无法  insert/update/delete

 

1.创建用户B

create user userB identified by "userB " default tablespace tbs1 temporary tablespace tbs1_temp profile DEFAULT;

 

2.授权

grant connect to userB;                                   --连接权限

grant CREATE SESSION to userB;                 --创建会话权限

grant CREATE SYNONYM to userB;               --创建同义词权限

grant select any table to userB;                       --可以查询任何表

--revoke SELECT ANY TABLE from userB;     --回收权限

 

还有一种授权方式:授予某个用户的某个表的 select/insert/update 权限

 

grant select on userA.t_bd_customer to userB;
grant insert on userA.t_bd_customer to userB;
grant update on userA.t_bd_customer to userB;

 

查看某个用户拥有哪个表的哪些权限:

记住这个表:all_tab_privs 

select * from all_tab_privs where GRANTEE='USERB';

 

3.创建同义词,不创建就不能直接通过单独的名词来查询

 create synonym table1_sy for userA.table1;

附:批量创建同义词的脚

select 'create or replace synonym '||object_name||' for '||owner||'.'||object_name||';' from dba_objects
where owner in ('USERA') and object_type='TABLE';

 

 

 

posted on 2022-02-15 15:30  水语者9  阅读(3549)  评论(0编辑  收藏  举报