Oracle SQL创建用户和授予权限

时间:2014-11-29 21:22:21

标签: sql oracle

我是SQL和编程的新手,所以如果措辞不明确,我会道歉。

我有以下代码来创建用户和角色。我希望user1能够选择并查看table1

  1. 当我运行此代码时user1无法选择table1,我得到表不存在的错误。
  2. 当我提示数据库输入屏幕时,我输入了用户名和密码。
  3. 当提示语句"Enter TNS_ADMIN entry or blank for Current Worksheet Database:"时,我没有输入任何内容。
  4. 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
    

1 个答案:

答案 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;