首页 > 解决方案 > 如何在一个角色的所有表上查找缺少的授权

问题描述

我的学生数据库架构有一些问题。我想通过查询找到哪些表没有:例如“SELECT”授予角色 XXX。第二个例子是,在表中,我喜欢删除、更改的授予,但现在我想用一个查询检查所有表,以查找哪些表没有选择授予角色“STUDENT_DBA”或该角色没有授予的权限选择...请帮助

标签: oraclegrant

解决方案


SELECT table_name
  FROM dba_tables
 WHERE owner = 'STUDENT'
 AND table_name NOT IN
     (SELECT table_name
        FROM dba_tab_privs
       WHERE owner = 'STUDENT'
         AND privilege = 'SELECT'
         AND grantee = 'STUDENT_DBA');

这将返回 STUDENT 模式中没有直接授予 STUDENT_DBA 角色选择权限的所有表。


推荐阅读