【问题标题】:Is it possible that one user creates a table in a schema of another user and have all privileges to his schema?一个用户是否有可能在另一个用户的模式中创建一个表并拥有他的模式的所有权限?
【发布时间】:2017-05-11 16:00:15
【问题描述】:

我有两个用户,USER1 和 USER2。我想这样做:

  1. 为 USER1 架构授予 USER2 的所有权限。 USER2 可以在 USER1 架构中创建表、插入、更新、删除、删除等。

  2. 当 USER2 创建表、视图等时,要在 USER1 的架构中创建。

  3. 创建新用户,例如 USER3,USER2 可以向其授予对 USER1 架构的所有权限,例如 USER2 对 USER1 架构的权限。

我可以做到这一点,如果可以,我该怎么做?

我找到了一些答案Grant permission from one user to another in Oracle

但是没有说明如何为所有表创建ROLE,而是一步一步地为表逐个授予选择权限。当 USER2 有 100 个表时,有没有一种方法可以一步完成,授予对当前在 USER2 模式中的所有表以及 USER2 将创建的未来表的选择权限。有没有可能解决这个问题?

【问题讨论】:

  • 为什么要这样做?以及“为 USER1 模式授予 USER2 的所有权限”是什么意思。什么权限?可以举个例子吗?
  • @miracle173 例如在他的schema中创建表,alter table,insert,delete等
  • 请编辑您的原始帖子并添加此信息。这一切的目的是什么?您能描述一下您的应用程序将如何使用它吗?
  • @miracle173 我们公司仅限于Oracle数据库的目的。在我们的 ERP 存储数据的“主”模式中,我们只需选择权限。但是为了我们的报告需求,它们使我们成为一个新的模式。我们希望在我们的架构中拥有完全权限,但只选择“主”架构的权限。当我说完全权限时,我的意思是为我们的模式创建表、用户、卷和所有这些。

标签: oracle oracle11g


【解决方案1】:

与其实际授予从一个用户到另一个用户的所有内容,也许代理连接更适合您。

使用代理连接,您基本上可以在不知道密码的情况下以其他人的身份登录。这允许您假设该用户的身份,因此您可以保证他们可以做的任何事情,您都可以作为他们的代理来做。

此外,它还将它们的架构设置为您的架构,这样您创建的任何不符合架构名称的对象都会在其架构中创建,而不是您的。

当然,不利的一面是,由于您成为代理用户,您将失去自己对该连接的授权。

sqlplus / as sysdba

alter user user1 grant connect through user2;
exit;

sqlplus user2[user1]
password: <Type in the password for user2>    

show user;
--------
USER1

create view mydual as select * from dual;

select owner from all_views where view_name = 'MYDUAL';
--------
USER1

在 SQLDeveloper (4.1.5) 中,您可以通过以下方式为连接指定代理连接:

1) 按高级按钮

2) 检查代理连接框

3) 在代理客户端对话框中输入您要代理的用户名

4) 将代理密码恶魔留空

5) 按确定

6) 使用连接

有点老了,不过AskTom有一篇关于代理连接的好文章。

【讨论】:

  • 好吧,我不熟悉这个。必须再多学习和搜索,看看这里发生了什么。谢谢:)
猜你喜欢
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 2020-12-16
  • 1970-01-01
相关资源
最近更新 更多