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