甲骨文用户权限

Oracle user privilege

我创建了两个新用户和一个新角色。给架构 A 中一个 table 角色的 select 权限,并将此角色分配给用户 b。与该用户一起针对架构 a 中的 table 发出 select 查询时,我遇到了 table 或未找到视图的问题。

创建用户 READUSER1,由 readuser1 识别; 创建由 readuser2 识别的用户 READUSER2;

创建角色 READONLY_USER 由 readonlyuser 识别;

GRANT select ON READUSER1.TESTA TO READONLY_USER;

向 READUSER2 授予 READONLY_USER;

现在来自 READUSER2 会话:

SELECT * 来自 READUSER1.TESTA > 00942.00000 - "table or view does not exist"

我假设您在 readUser1 模式中成功创建了 table,尽管您没有显示该步骤。

当以 readUser2 身份登录时,会话启用了哪些角色?

select *
  from session_roles

我敢打赌该会话未启用该角色。通常,您不会为角色设置密码,因为您通常希望这些角色在用户登录后立即可用。但是,如果您为角色设置密码,那么每次用户创建新会话时,他们必须通过指定密码来明确启用该角色。这在一些不寻常的情况下非常有用,但它不是常态。

假设readonly_user没有出现在session_roles中,可以使用set role命令启用角色

set role readonly_user
  identified by readonlyuser;

完成后,角色应该出现在 session_roles 中,您应该可以查询 table.

不过,通常情况下,您会通过省略 identified by 子句

创建一个普通角色而不是受密码保护的角色
create role readonly_user;