加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 向不同架构的用户授予权限

发布时间:2021-05-19 13:09:17 所属栏目:站长百科 来源:网络整理
导读:我在Schema A中有表.我使用模式A中的表在Schema B中创建了视图. 我想授予用户权限,以便从Schema B中的视图中选择数据. 为了实现这个目的,我知道我们必须在Schema A中的表上为用户B启用grant选项. 但是我想在一个脚本中完成它(这个脚本必须在模式B中).有没有

我在Schema A中有表.我使用模式A中的表在Schema B中创建了视图.

我想授予用户权限,以便从Schema B中的视图中选择数据.

为了实现这个目的,我知道我们必须在Schema A中的表上为用户B启用grant选项.
但是我想在一个脚本中完成它(这个脚本必须在模式B中).有没有办法使用模式A的用户名/密码来执行此操作.

想要使用单个脚本来部署更改并不罕见.问题是,这样的脚本需要由高级用户运行,因为它需要具有任何级别的系统权限.这通常意味着DBA帐户,最好是应用程序帐户,但SYSTEM或SYS.

所以你想要的脚本看起来像这样:

grant select on user_a.t23 to user_b
/
grant select on user_a.t42 to user_b
/
create view user_b.v_69 as
select t23.col1,t42.col2
from   user_a.t42
       join user_a.t23
           on (t42.id = t23.id)
/
grant select on user_b.v_69 to user_c
/

一个常见的场景是我们有一套单独的脚本,这些脚本已被编写为由不同的用户运行,但我们现在需要捆绑到单个部署中.原始脚本不包含模式名称,并且有很多很好的理由可以解释为什么我们不想在脚本中对它们进行硬编码.

构建该主脚本的一种方法是使用更改CURRENT_SCHEMA语法:

alter session set current_schema=USER_A
/
@run_grants_to_userb.sql

alter session set current_schema=USER_B
/
@create_view69.sql
@run_grants_to_userc.sql

我们仍然需要DBA用户来运行主脚本.切换当前模式的一个优点是它允许我们部署像数据库链接这样的对象,这些对象通过语法的怪癖在其声明中不能具有模式名称.一个问题是用户不会改变,因此使用USER伪列的脚本可能会产生不需要的结果.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读