首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我可以创建一个同义词,但是不能给相同的表授予select?

为什么我可以创建一个同义词,但是不能给相同的表授予select?
EN

Stack Overflow用户
提问于 2016-09-13 13:53:46
回答 2查看 4.5K关注 0票数 2

我正在尝试授予从schema1到schema2 (oracle10g)对表的访问权限。

我在schema2上创建了一个同义词:

代码语言:javascript
复制
CREATE SYNONYM schema2.table FOR schema1.table;

同义词是成功创建的。

然后,我尝试在同一个表上授予select:

代码语言:javascript
复制
grant select on schema1.table to schema2;

我得到了:

代码语言:javascript
复制
ORA-00942: table or view does not exist 

这对我来说毫无意义。我能够创建同义词,但不能创建授予。我做错什么了?

我无法从schema2获得这张桌子:

代码语言:javascript
复制
select * from table;
ORA-00942: table or view does not exist
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-13 14:02:46

如果我有“创建任何同义词权限”,我可以为模式2中的模式1中的表创建同义词,而不需要对底层对象授予权限。如果我没有对schema1表(授予格兰特选项)的权限将它重新授予给另一个用户,那么我也不能从这个用户进行授权。

解决方案,以schema1身份登录并在那里执行授予,然后同义词将在schema2下工作,或确保我登录的用户有权将授权授予schema1对象。

根据你的评论:

以schema1身份登录,并授予您希望schema2在表中包含的任何操作。

(例如)

SQL>将表上的选择、插入、更新、删除授予SCHEMA2;

然后,SCHEMA2将能够通过其同义词查看表,并允许对其进行这些操作。

如果SCHEMA2打算在视图中使用此表,然后它将授予对其他模式的select访问权以供使用,那么您需要将"WITH GRANT选项“添加到来自schema1或schema2的初始授权中,否则将无法向其他用户重新授予权限。

票数 3
EN

Stack Overflow用户

发布于 2016-09-13 14:02:54

您可以为实际上不存在的对象创建同义词。

create synonym flub for blib;

...so能够创建同义词这一事实并不意味着存在对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39471855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档