首页 文章

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

提问于
浏览
8

我有两个用户:Schema1和Schema2

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

我一直在转身,我感到困惑 . 我试过了 :

从Schema2我试过,

GRANT CREATE TABLE TO SCHEMA1 WITH ADMIN OPTION;

但似乎这会在自己的Schema中为Schema1创建表,而不是在Schema2中 .

有什么想法吗?

谢谢 .

3 回答

  • 5

    你想授予 create ANY table

    grant create any table to schema1;
    

    any "modifier"允许以非自己的模式创建表 .

  • 14

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

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

  • 2

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

    • 在schema2上创建一个过程,该过程将表定义作为"input"参数(例如,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;

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

相关问题