感谢您在以下情况下的合作。我有两个不同的数据库(例如:orcl1
和orcl2
),数据库orcl1
有多个用户模式(esquema1
, esquema2
),数据库orcl2
有一个用户模式usrdb
。我必须授予权限,以便usrdb
数据库用户orcl2
可以crud
对模式表esquema1
和esquema2
数据库表执行操作orcl1
。我的问题是如何在数据库用户之间授予这些权限?
感谢您在以下情况下的合作。我有两个不同的数据库(例如:orcl1
和orcl2
),数据库orcl1
有多个用户模式(esquema1
, esquema2
),数据库orcl2
有一个用户模式usrdb
。我必须授予权限,以便usrdb
数据库用户orcl2
可以crud
对模式表esquema1
和esquema2
数据库表执行操作orcl1
。我的问题是如何在数据库用户之间授予这些权限?
简短的回答是:您不能在 oracle 中向另一个数据库的用户授予权限。
使这个答案更长:
这并不意味着连接到数据库的人不能修改驻留在另一个数据库中的信息,只是他们必须使用由所谓的db links控制的身份验证机制。本质上,db-link 定义了与数据库的连接参数以及在其中进行身份验证的方式,可以通过存储在db-link中的用户名和密码;即:数据库A的所有用户在对数据库B执行操作时会显示为同一个用户,也可以是
CURRENT USER
.最简单的就是第一个,比如在你的数据库所在的主机上
Orcl2
,用参数配置一个TNS别名,Orcl1
然后执行这个指令:在 Orcl1 数据库中,必须存在用户Orcl2User及其密码Orcl2Password。
从那里,所有 Orcl2 用户将能够使用 Orcl2User 权限访问 Orcl1 对象,例如,执行以下操作:
如果这对您来说还不够,那么让我们谈谈以下数据库链接
CURRENT USER
:在这种情况下,用户必须是必须存在于两个数据库 (LDAP) 中的全局用户。
创建数据库链接是这样的:
用法是相同的,但是这一次,每个用户都将拥有自己的特权(在每个数据库上本地授予,因为用户都存在于两者中)。
有关更多信息,请访问该子句的文档,该文档由文档中
GLOBALLY
的定义 CURRENT_USER 数据库链接示例进行了create user
补充CREATE DATABASE LINK