小编asg*_*eo1的帖子

创建视图时,如果用户已经通过角色拥有相同的权限,为什么还需要直接对象权限?

我在 Oracle 10g 中遇到权限问题。我希望有人可以帮助我理解这一点。

我有一个带有表格的架构。我已将该表上的 select 授予一个角色。

grant select on user1.example_table to example_role;
Run Code Online (Sandbox Code Playgroud)

然后我将该角色授予用户:

grant example_role to user2;
Run Code Online (Sandbox Code Playgroud)

然后 user2 想在该表的顶部创建一个视图:

create or replace view user2.example_view as
select *
from user1.example_table;
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误:

ORA-01031: insufficient privileges
Run Code Online (Sandbox Code Playgroud)

为什么?如果他们通过角色拥有选择权限,为什么他们不能在该对象上创建视图?

我发现我必须将对象直接授予用户才能工作。

grant select on user1.example_table to user2;
Run Code Online (Sandbox Code Playgroud)

无论如何不必这样做吗?我想使用角色,因为我有很多表和很多用户,并且不想为单个用户维护一百万个不同的授权。

oracle permissions role view

7
推荐指数
3
解决办法
3万
查看次数

标签 统计

oracle ×1

permissions ×1

role ×1

view ×1