我是SQL和编程的新手,所以如果措辞不明确,我会道歉。
我有以下代码来创建用户和角色。我希望user1
能够选择并查看table1
。
user1
无法选择table1
,我得到表不存在的错误。 "Enter TNS_ADMIN entry or blank for Current Worksheet Database:"
时,我没有输入任何内容。 USER1
能够连接,但不能查看表格。在连接中的“其他用户”下,我看到USER1
,但没有列出我建立的表。
谢谢!
CREATE USER user1
IDENTIFIED BY user1
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
ACCOUNT UNLOCK;
CREATE ROLE ReadOnly;
GRANT SELECT ON table1 to ReadOnly;
--GRANT SELECT ON table2 to ReadOnly;
--GRANT SELECT ON table3 to ReadOnly;
GRANT CONNECT to user1;
GRANT ReadOnly to user1;
grant create session to user1;
connect user1
show user
select * from table1
答案 0 :(得分:1)
假设table1
不属于user1
,您有三个选项
您可以在查询中使用表格的全名
SELECT * FROM <<schema name>>.table1
您可以为table1
创建同义词。 user1
模式中的私有同义词通常是首选,但公共同义词也可以使用。作为user1
CREATE SYNONYM table1 FOR <<schema name>>.table1
SELECT * FROM table1;
或者您可以更改默认架构(出于名称解析的目的,这对权限没有影响)
ALTER SESSION SET current_schema=<<schema that owns table1>>
SELECT * FROM table1;