如题:A用户下面有表table1
创建用户B,只有connect和Select权限。能否使B访问A的表时这样写 select * from table1, 而不是 select * from A.table1。各位大拿详细说说 , 谢谢 !
创建用户B,只有connect和Select权限。能否使B访问A的表时这样写 select * from table1, 而不是 select * from A.table1。各位大拿详细说说 , 谢谢 !
--只能采用公有同义词的方式(public synonym),你必须给B用户create public synonym的权限
----或者采用其他大权限用户如 sys system 创建相关的同义词,同时将B用户下表的查询权限付给相应用户
--如:[SYS@myoracle] SQL>create user test identified by test;用户已创建。[SYS@myoracle] SQL>grant connect ,resource to test;授权成功。[SYS@myoracle] SQL>create user test1 identified by test1;用户已创建。[SYS@myoracle] SQL>grant connect ,resource to test1;授权成功。[SYS@myoracle] SQL>conn test1/test1
已连接。
[TEST1@myoracle] SQL>create table t1(id int);表已创建。[TEST1@myoracle] SQL>conn test/test
已连接。
[TEST@myoracle] SQL>select * from test1.t1;
select * from test1.t1
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
[TEST@myoracle] SQL>conn / as sysdba
已连接。
[SYS@myoracle] SQL>create public synonym t1 for test1.t1;同义词已创建。[SYS@myoracle] SQL>conn test/test
已连接。
[TEST@myoracle] SQL>select * from t1;
select * from t1
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
[TEST@myoracle] SQL>conn test1/test1
已连接。[TEST1@myoracle] SQL>grant select on t1 to test;授权成功。[TEST1@myoracle] SQL>conn test/test
已连接。
[TEST@myoracle] SQL>select * from tab;未选定行[TEST@myoracle] SQL>select * from t1;未选定行[TEST@myoracle] SQL>desc t1;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(38)[TEST@myoracle] SQL>
create public synonym table1 for 用户A.table1;然后在用户A下面把这个同义词的select 权限 赋予 B用户
grant select on 用户B;
一定要建立public的同义词吗?