如何允许其他用户访问我的架构

时间:2018-10-29 18:09:51

标签: oracle database-schema

我正在尝试允许其他用户访问我自己的数据库架构。我知道如何在我自己的架构下向用户授予对单个表的权限,但我希望这样做,以便用户可以在我的架构下随时创建和编辑表。

1 个答案:

答案 0 :(得分:2)

这是一个坏主意。现在继续阅读。

没有任何方法可以做到这一点。超级用户(具有CREATE ANY,ALTER ANY等特权的帐户)可以执行此操作,但这是因为他们具有对任何模式的权限,而不仅仅是您的权限。

这样做的原因仅仅是Oracle的安全模型在schema.object级别上起作用,并且没有人提出在schema级别上引入特权的令人信服的商业理由。 Oracle的许多新功能选择是由付费客户想要什么或Oracle认为可能吸引新的付费客户驱动的。

因此无法完成,因为从根本上说,几乎没有人愿意做您想做的事情。而且没人愿意这样做,因为这通常是一个坏主意。控制我们的模式,对我们的数据和业务逻辑进行管理的能力是非常强大的。授予访问架构中所有对象的权限(尤其是创建或更改这些对象的权限)是一件应该很少且尽可能窄的事情。

但是,如果您坚定不移地学习这门课程,那么这里是如何做的示意图。

  1. 从数据字典视图USER_OBJECTS驱动,生成脚本以将架构中的(所有?)对象的(所有?)特权授予命名的用户。
  2. 创建一个动态执行DDL的包(例如CREATE TABLE,ALTER TABLE等)。将在该程序包上的执行授予指定的用户。
  3. 为该架构编写一个AFTER CREATE触发器,该触发器将已创建对象的特权授予命名用户。

您可以选择使用角色,而不是指定用户,尤其是当您想让多个人在架构中创建混乱时。

玩得开心!