繁体   English   中英

Oracle:授予在另一个模式中创建表?

[英]Oracle : Grant Create table in another schema?

我有两个用户:Schema1 和 Schema2

如何将 Schema2 上的 Create Table 权限授予 Schema1 ?

我一直在转身,我很困惑。 我试过 :

从 Schema2 我试过了,

GRANT CREATE TABLE TO SCHEMA1 WITH ADMIN OPTION;

但似乎这将创建表授予 Schema1 在其自己的 Schema 中而不是在 Schema2 中。

请问有什么想法吗?

谢谢你。

允许非DBA用户在另一个模式中创建表的唯一方法是为用户提供CREATE ANY TABLE系统特权。

此权限只能由具有DBA权限的用户授予SCHEMA1。

您想要授予create ANY table

grant create any table to schema1;

any “修饰符”都允许创建除自己的模式之外的表。

更好的解决方案(最小化CREATE ANY TABLE权限带来的安全威胁......)

  • 在schema2上创建一个过程,该过程将表定义作为“输入”参数(例如,varchar2(4000)中的p_tab_def)。
  • 里面放了一个execute_immediate(p_tab_def); 声明。 你必须首先检查p_tab_def,以保护自己免受其他DDL语句的影响,而不是“CREATE TABLE [...]”。 (例如,您可以通过检查前两个单词来使用简单的检查 - >它必须是“CREATE TABLE”)。
  • GRANT EXECUTE ON schema2.procedure_name TO schema1;

这是一个简单的概念......我在以前的工作中使用过这样的概念。

oracle 无法为不同的用户提供对 DDL/DML/SELECT 操作的特定模式的访问,这真的很糟糕。

您可以使用 CREATE ANY、SELECT ANY 等权限。 但这些都是全球特权。 例如,如果您向 user1 授予 CREATE ANY 特权,则 user1 将能够在任何其他模式中创建 TABLE,而不仅仅是在其他预期模式上。

这是oracle数据库系统的一个缺点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM