1

我想知道如何将特定用户有权访问的所有数据库对象的权限授予另一个用户。

为了说明,Oracle 数据库中有四个用户:A、B、C 和 D。

  1. 用户 A 不拥有任何对象,但可以访问 B 和 C 中的某些对象。
  2. 用户 B 和 C 拥有一些对象,但也可以访问 B、C 和 D 中的其他数据库对象。

现在我希望用户 A 拥有用户 B 和 C 拥有的所有权限(其中一些权限是 A 已经拥有的)。

这样做的正确方法是什么。我应该使用查询还是程序?是否应该始终使用数据库对象所有者的登录名来运行此过程?例如,B 可以访问 D 中的某个对象,B 可以将 D 的对象的权限授予 A 吗?

4

1 回答 1

3

您可以使用角色对系统和对象权限进行分组,然后将这些角色分配给用户和其他角色。通过这种方式,您可以将角色包含的权限集体授予用户,从而简化安全管理(参见数据库概念中的“权限和角色授权”)。

例如,B 可以访问 D 中的某个对象,B 可以将 D 的对象的权限授予 A 吗?

用户SCOTT可以将对象特权、系统特权或角色授予另一个用户或角色,如果他已被授予此特权或角色WITH ADMIN OPTIONWITH 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现在可以使用或不使用 admin 选项将此角色分配给其他数据库用户:

grant select_hr to bob;

请参阅数据库安全指南中的“授予用户权限和角色”

于 2013-05-22T03:38:12.013 回答