將一個使用者下所有表的查詢許可權賦給另一個使用者

小亮520cl發表於2015-06-11

今天在論壇裡看到一個帖子,關於如何將一個使用者下所有表的查詢許可權賦給另一個使用者,具體需求是這樣的:有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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章