架构所有者无法向其他用户授予选择访问权限(SQL Developer

问题描述 投票:0回答:1

我有 Oracle 示例模式

HR
OE
SH
,它们分别与用户
hr
oe
sh
相关联。 当我以
sh
用户身份登录时,它会自动访问所有 SH 模式表,就像“oe”用户访问
OE
模式和
hr
用户访问
HR
模式一样。 所以我“假设”用户是上面相应模式的所有者。

作为

sh
用户,我可以使用以下命令成功授予“hr”用户对所有 SH 模式表的读取权限:

           `GRANT SELECT ANY TABLE to hr`

但是,当我以“oe”用户身份登录时,尽管我可以访问所有 OE 架构表,但当我运行与上面相同的 SQL 命令以向

hr
用户授予读取访问权限时,我会收到“缺少权限”错误。 错误信息如下所示:

Error starting at line : 4 in command -
GRANT SELECT ANY TABLE TO hr
Error report -
ORA-01031: insufficient privileges
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges

感谢其他 stackoverflower 的意见来解决这个

grant
问题。还想知道正确的 Oracle SQL 来检查特定模式的所有者。

我有版本为

21.21.1.204
的 SQL Developer 和“Oracle IDE”版本为
21.21.204.1703

oracle oracle-sqldeveloper
1个回答
0
投票

GRANT SELECT ANY TABLE to hr
不会向执行该语句的用户所拥有的对象授予权限。它向 all 模式拥有的 all 表授予权限,无论谁运行该语句,并且通常只有 DBA 才能执行此操作。显然,在您的安装中,HR 具有 DBA 级别的权限,而 OE 则没有。

Oracle 中没有内置模式级权限。要实现类似的目标,您必须定义一个角色,将给定架构拥有的所有表的 select 权限授予该角色,然后将该角色授予您想要授予访问权限的用户。

© www.soinside.com 2019 - 2024. All rights reserved.