如何列出用户的所有选择,插入,删除或更新授权

时间:2012-08-23 20:54:14

标签: oracle grant

DB:Oracle 10g

我可以为某些表授予用户DML命令:

GRANT SELECT, UPDATE, DELETE, INSERT ON USER_A.TABLE_1 TO USER_B;

如何列出USER_B收到的所有授权(关于选择,更新,插入,删除)以及哪些表格?

我检查过表“all_tab_privs_recd”,但没有找到我要找的东西。

3 个答案:

答案 0 :(得分:2)

Oracle安全专家extrordinaire的Pete Finnegan提供了几种不同的工具,可以帮助您回答这些类型的问题。

请参阅: http://www.petefinnigan.com/tools.htm

特别是,对于上面的问题,请参阅find_all_privs.sql

希望有所帮助。

答案 1 :(得分:1)

我无法弄清楚如何使用您建议列出USER_B收到的所有授权的那些视图。

GRANT SELECT,UPDATE,DELETE,INSERT ON USER_A.TABLE_1 to USER_B;

我查询:

select * from all_tables where owner='USER_A'
shows 16 rows

Select * from all_tab_privs_recd  where grantor = 'USER_A'
shows 0 rows

Select * from all_tab_privs_recd  where grantee = 'USER_A'
shows 0 rows

Select * from all_tab_privs_recd  where grantee = 'USER_B'
shows 0 rows

Select * from all_tab_privs_recd  where grantor = 'USER_B'
shows 129 rows, but USER_A is not in grantee, nor in grantor nor in owner

答案 2 :(得分:0)

all_tab_privs_recd(和all_tab_privs)视图仅显示对其具有显式授权的表,它们不显示USER_B拥有的表。 (除非已经给予其他用户授权。也就是说,GRANTEE和OWNER是相同的。)为此,您必须查看all_tables以查看他们拥有的表格,因此具有完全访问权限。