2016-09-20 167 views
0

虽然我知道结果,但我并不十分相信背后的原因。需要数据库专家的帮助。授予与管理员选项角色的权限Vs授予与管理员选项的用户角色?

(说)由DBA与user1和user2一起创建基于role1角色

connect /as sysdba create user USER1 identified by xyz; create user USER2 identified by abc; create role ROLE1;

案例1:

  1. A '选择任何表' 特权授予ROLE1没有管理员选项

    connect /as sysdba grant select any table to ROLE1;

  2. 格兰特role1上以USER1与管理选项

    connect /as sysdba grant ROLE1 to USER1 with admin option;

  3. 可以USER1现在格兰特选择任何特权“给其他用户?

    connect USER1/xyz grant select any table to USER2;

我得到ORA-01031:特权不足错误在这里,这意味着它是不正确的做法。

案例2:

  1. A '选择任何表' 特权授予role1上具有管理员选项

    connect /as sysdba grant select any table to ROLE1 with admin option;

  2. 格兰特role1上以USER1不论您授予其w/or w/o管理员选项

    connect /as sysdba grant ROLE1 to USER1;

  3. USER1现在是否可以向其他用户授予“选择任何特权”?

    connect USER1/xyz grant select any table to USER2;

这工作完全没有报告任何错误。

任何人都可以帮忙理解CASE2为什么不行,为什么不行CASE1?

回答

2

CASE1:

grant ROLE1 to USER1 with admin option;意味着你可以授予ROLE1给其他用户,无论什么都被授予ROLE1。因此grant select any table to USER2;不起作用。

但是,grant ROLE1 to USER2;应该工作。

CASE2:

您获得许可(通过角色ROLE1,像DBA作用得到它)授予select any table给其他用户。所以,grant select any table to USER2;的作品。另一方面应该失败。

相关问题