如何授予一个用户访问Oracle中其他用户的权限?

How to grant privileges to one user to access other users in Oracle?

有 3 个模式:DEMO1、DEMO2、DEMO3 我想授予 DEMO1 权限以在 DEMO2 而不是 DEMO3 上执行所有操作。

ALL 操作表示:Select、更新、插入、删除

如何在 Oracle SQL Developer 中授予权限?

你真的不能那样做。有许多 DDL 特权 - 正如 astentx 指出的那样 - 你要么被限制在你拥有的东西上,要么你可以影响系统中的 ANY table,而不仅仅是一个其他用户。没有中间立场,除非您还使用 add-on 企业产品,例如 Database Vault。如果您在谈论 DML(插入、更新、删除数据),则将特定的 table 权限授予一个角色并将该角色授予 DEMO1。

create role demo2_dml;
grant insert, update, delete on demo2.table_a to demo2_dml;
grant insert, update, delete on demo2.table_b to demo2_dml;
...
grant role demo2_dml to demo1;
alter user demo1 default role all;

或者,如果您还必须拥有 DDL 权限,您可以授予 DEMO1 proxy 权限以成为 DEMO2 并承担其对其对象的所有权限。

alter user demo2 grant connect through demo1;

然后使用 demo1[demo2] 作为用户名和 demo1 的密码进行连接:

connect demo1[demo2]/demo1password@database_service

demo1 然后变成 demo2(不需要知道 demo2 的密码)并且可以做 demo2 可以做的任何事情。然而,在执行此操作时,demo1 将无法访问其 own 对象。