Ken*_*nny 4 oracle privileges synonym oracle10g oracle11g
1 /同义词和底层对象的权限如何相关?如果一个人拥有同义词的权利,他会自动拥有该表的权利,反之亦然吗?
甲骨文说
当您在同义词上授予对象权限时,您实际上是在对基础对象授予权限,并且同义词仅作为GRANT语句中对象的别名
这意味着同义词的特权就足够了.这将绕过表权限.
另一个消息来源说,桌面上的访问权限已足够,同义词权限没有任何意义.
这是表示同义词或基础表上的权限是否足够?
2 /私有和公共同义词的行为是否相同.我还没有真正看到为用户授予"查看/访问"同义词权限的示例.如何向用户授予私有同义词的权限?
Oracle文档和您提到的消息都说完全相同.权限未授予同义词.当您尝试在同义词上授予权限时,数据库实际上会对同义词引用的对象执行授予.因此,如果同义词是公共的或私有的,则没有区别,因为实际授权是在同义词引用的对象上进行的.
祝你好运.
让我们来说明发生了什么:
-- Logged in as user BOB2
CREATE TABLE RPJ_TEST (N NUMBER);
SELECT *
FROM DBA_TAB_PRIVS
WHERE TABLE_NAME = 'RPJ_TEST';
-- the above statement returns no rows
CREATE SYNONYM RPJ_TEST_SYN -- create synonym
FOR RPJ_TEST;
SELECT *
FROM DBA_TAB_PRIVS
WHERE TABLE_NAME = 'RPJ_TEST';
-- the above statement returns no rows
GRANT SELECT ON RPJ_TEST TO BOB; -- grant on table
SELECT *
FROM DBA_TAB_PRIVS
WHERE TABLE_NAME = 'RPJ_TEST';
-- the above statement returns
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
BOB BOB2 RPJ_TEST BOB2 SELECT NO NO
GRANT UPDATE ON RPJ_TEST_SYN TO BOB2; -- grant "on synonym" actually performs grant on table
SELECT *
FROM DBA_TAB_PRIVS
WHERE TABLE_NAME = 'RPJ_TEST';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
BOB BOB2 RPJ_TEST BOB2 SELECT NO NO
BOB BOB2 RPJ_TEST BOB2 UPDATE NO NO
Run Code Online (Sandbox Code Playgroud)
请注意,在同义词RPJ_TEST_SYN上授予后,同义词引用的表上授予的权限已更改.
| 归档时间: |
|
| 查看次数: |
25327 次 |
| 最近记录: |