DB:Oracle 10g
我可以为某些表授予用户DML命令:
GRANT SELECT, UPDATE, DELETE, INSERT ON USER_A.TABLE_1 TO USER_B;
如何列出USER_B收到的所有授权(关于选择,更新,插入,删除)以及哪些表格?
我检查过表“all_tab_privs_recd”,但没有找到我要找的东西。
答案 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
以查看他们拥有的表格,因此具有完全访问权限。