我想知道如何授予特定用户有权访问其他用户的所有数据库对象的权限。
为了说明,Oracle数据库中有四个用户:A,B,C和D.
现在我希望用户A拥有用户B和C拥有的所有权限(其中一些A已经拥有)。
这样做的正确方法是什么。我应该使用查询还是程序?是否应该始终登录数据库对象所有者来运行此过程?例如,B可以访问D中的某个对象,B可以将D对象的授予权限授予A?
答案 0 :(得分:2)
您可以使用角色对系统和对象权限进行分组,然后将这些角色分配给用户和其他角色。通过这种方式,您可以将角色包含的权限授予用户,从而简化了安全管理(请参阅数据库概念中的"Privilege and Role Authorization")。
例如,B可以访问D中的某个对象,B可以将D的对象的授予权限授予A吗?
如果用户SCOTT
被授予此权限或角色WITH ADMIN OPTION
或WITH GRANT OPTION
,则用户select_hr
可以将对象权限,系统权限或角色授予其他用户或角色。例如,角色HR
具有查询用户create role select_hr;
grant select on hr.employees to select_hr;
grant select on hr.departments to select_hr;
拥有的某些表的权限:
SCOTT
现在您可以通过这种方式将此角色分配给grant select_hr to scott with admin option;
:
SCOTT
grant select_hr to bob;
现在能够将此角色分配给具有或不具有admin选项的其他数据库用户:
{{1}}
请参阅“数据库安全指南”中的"Granting a User Privileges and Roles"。