微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建同义词是否会自动授予对 oracle 中基础表的选择访问权限

如何解决创建同义词是否会自动授予对 oracle 中基础表的选择访问权限

我有两个用户 - 我们的 oracle 数据库中的 schema1 和 schema 2。

我在schema1中创建了一个表和同义词,如下

创建表测试(用户varchar2(25));

为 schema1.test 创建或替换同义词 schema2.test

当我尝试从我们的开发环境和生产环境之间的 schema2 查询测试表时,我观察到了行为差异。

从测试中选择*
在我们的开发环境中没有抛出任何错误

但是当我在生产中运行相同的命令时,我得到了 schema2 权限不足的错误。我必须在生产环境中将测试表的 select 授予明确授予 schema2。

为什么在开发环境和生产环境之间会出现这种差异?

创建同义词是否会自动授予对 oracle 中基础表的选择访问权限?

解决方法

不,没有。来自the documentation

然而,同义词不能代替数据库对象的特权。在用户可以使用同义词之前,必须向用户授予适当的权限。

假设在您没有意识到或记住的情况下没有直接或通过角色(当然您可以轻松检查)授予对表的权限,那么您的开发环境中的 schema2 听起来像是“任何”特权 - 例如 select any table - 作为快捷方式授予,可能是为了方便。这可以是直接的,也可以是通过角色。

再次来自the documentation

READ ANY TABLESELECT ANY TABLE 系统权限还允许您从任何表、物化视图、分析视图或层次结构或任何物化视图、分析视图或层次结构的基表中选择数据.

那种特权shouldn't be granted lightly,因此它们不在生产中出现也就不足为奇了。如果它们必须处于开发阶段 - 并且必须有人同意 - 那么具有与生产相同限制的中间测试或模型环境将有助于在您之前识别差异,例如缺少授权尝试部署到生产环境。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。