今天在论坛里看到一个帖子,关于如何将一个用户下所有表的查询权限赋给另一个用户,具体需求是这样的:有3个普通权限的用户,要求用户2只能查询用户1下的表而不能去查询用户3所创建的表。
针对这个问题,只要将用户1下所有表的查询权限赋给用户2即可。但是,用户1下可能有很多表,如果一条一条地写grant语句很不现实,这里介绍一种便捷的方法:通过查询语句得到grant赋权限脚本,执行一下就可以了。
SQL> show user
USER 为"SYS"
SQL> create user tt
2 identified by tt;
用户已创建
SQL> grant create session to tt;
授权成功。
SQL> select 'grant select on '||owner||'.'||object_name|| ' to user1;'
2 from dba_objects
3 where object_type='TABLE' and wner='SCOTT';
'GRANTSELECTON'||OWNER||'.'||OBJECT_NAME||'TOUSER1;'
------------------------------------------------------------------------------
grant select on SCOTT.BONUS to user1;
grant select on SCOTT.CC to user1;
grant select on SCOTT.CC1 to user1;
grant select on SCOTT.DEPT to user1;
grant select on SCOTT.EMP to user1;
grant select on SCOTT.SALGRADE to user1;
grant select on SCOTT.T1 to user1;
grant select on SCOTT.T2 to user1;
grant select on SCOTT.TT to user1;
已选择9行。
复制上面的查询结果执行一下就可以了。如果查询结果太多的话,可以将这样做:
set pages 999;
set heading off;
spool run_grant.sql
select 'grant select on '||owner||'.'||object_name|| ' to user1;'
from dba_objects
where object_type='TABLE' and wner='SCOTT';
spool off;
@run_grant
这是一种很方便高效的方法,可以使工作事半功倍。
把所有表的查询权限赋给另一个用户
grant select any table to QUERY;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-1695930/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29096438/viewspace-1695930/
本文介绍了一种高效方法来将多个表的查询权限批量授权给另一个用户,特别适用于用户间表访问权限的精细化管理。通过使用SQL查询获取目标用户下的所有表并生成授权脚本,简化了传统逐个授权的繁琐过程。此技巧适用于数据库权限管理和维护场景。
1014

被折叠的 条评论
为什么被折叠?



