当前位置: 代码迷 >> Oracle管理 >> SYNONYM PUBLIC 問題,该如何解决
  详细解决方案

SYNONYM PUBLIC 問題,该如何解决

热度:153   发布时间:2016-04-24 04:12:41.0
SYNONYM PUBLIC 問題
您好:
請問
PUBLIC 修飾字:建立所有使用者皆可存取的 SYNONYM
我實際測試如下
1.有PUBLIC ,並給 U01 select SYNONYM的權限
create PUBLIC SYNONYM e2 for AA.emp2;
grant select on e2  to u01;

select * from AA.emp2;   ==>OK
select * from e2;       ==>OK

----
2.沒 PUBLIC ,並給 U01 select SYNONYM的權限
create        SYNONYM e2 for AA.emp2;
grant select on e2  to u01;

select * from AA.emp2;   ==>OK
select * from e2;        ==>表格不存在

請問PUBLIC 不是 所有使用者皆可存  嗎?
為何還要 授權才可用?

還是他只是:說這一個 同義字,可以公開給所有人用,但要授權才真正可用。

而(2)中,為何 授權給 u01, 
但SYNONYM 無法讀取,  原本的基礎TABLE AA.emp2,卻可讀取。

謝謝!
------解决思路----------------------
引用:

就算是public,用户也需要有对public的访问权限,

第二种情况,由于是私有同义词,访问时需要在同义词前加user,如:如果该同义词是user01的,那么应该为
select * from user01.e2
因为如果不加用户名做前缀,就会去在当前用户的对象,但是没有改对象。so....
------解决思路----------------------
私有同义词只有用户本身可以访问,当然你也可以显示授权别的用户访问
授权用户在访问时要加上模式名如:
select * from 用户名.e2
  相关解决方案