我有两个用户,USER1和USER2。我想这样做:
为USER1架构的USER2授予所有权限。 USER2可以在USER1架构
当USER2创建表,视图等时,在USER1的架构中创建。
创建新用户,例如USER3,USER2可以向USER1的架构授予所有权限,例如USER2必须具有USER1架构的权限。
我可以做到这一点,如果有可能,我该怎么做?
我找到了一些答案Grant permission from one user to another in Oracle
但是没有解释如何为所有表创建ROLE,而是逐步向表中授予select权限。当USER2有100个表时,有一种方法可以一步完成,为当前处于USER2模式的所有表以及USER2将创建的未来表授予select权限。有可能管理这个吗?
答案 0 :(得分: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)按OK
6)使用连接
有点旧,但AskTom有一篇关于代理连接的好文章。