我正在尝试授予“读取”用户的选择权限,但是当我与该用户一起输入时,我什么也做不了。 它给了我以下失败:
SQL> desc table
ERROR:
ORA-04043: object enfermeria does not exist
要授予我执行此操作的权限:
CREATE USER books_admin IDENTIFIED BY MyPassword;
GRANT CONNECT TO books_admin;
GRANT CONNECT, RESOURCE, DBA TO books_admin;
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO books_admin;
GRANT UNLIMITED TABLESPACE TO books_admin;
GRANT
SELECT,
ON
schema.books
TO
books_admin;
答案 0 :(得分:0)
以“ books_admin”用户的身份尝试:
desc schema.books
如果可行,请尝试:
create [public] synonym books on schema.books;
desc books;
希望有帮助。
答案 1 :(得分:0)
男孩,您向该用户授予了很多东西,绝大多数特权是不必要的,其中有些特权甚至是危险(您不应该真正授予这样的DBA)。另外,您应该尝试发布您的实际工作,而不是发布弥补的内容(您试图描述 table ,而Oracle回应了 enfermeria >不存在)?
这是您可能会接受的建议。
我将以特权用户身份连接到我的XE数据库(在本例中为SYS;如果您要用于管理目的还有另一个,请使用它)以创建读取用户
C:\>sqlplus sys@xe as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Uto Lis 23 21:32:36 2018
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> create user read_user identified by ru
2 default tablespace users
3 temporary tablespace temp
4 quota unlimited on users;
User created.
SQL> grant create session to read_user;
Grant succeeded.
注意我授予read_user的内容:仅创建会话。到目前为止,这是它唯一需要的特权。如果事实证明它还需要其他东西,请授予它,但不要授予诸如 connect,resource,dba 之类的角色-不再以这种方式。
现在,以拥有表的用户身份进行连接,我想让read_user从中进行选择。
SQL> connect scott/tiger@xe
Connected.
SQL> grant select on dept to read_user;
Grant succeeded.
最后,以read_user身份连接并查看其内容:
SQL> connect read_user/ru@xe
Connected.
SQL> desc dept
ERROR:
ORA-04043: object dept does not exist
啊!同样的错误!这是因为read_user没有可用的DEPT表-它在他的模式中不存在,没有公共同义词,因此-他应该在表名之前加上表的所有者名(即Scott):
SQL> desc scott.dept
Name Null? Type
----------------------------------------- -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
好多了,你不觉得吗?
为了不指定所有者名称,请创建该表的同义词(仍以read_user身份连接):
SQL> create synonym dept for scott.dept;
create synonym dept for scott.dept
*
ERROR at line 1:
ORA-01031: insufficient privileges
糟糕!做不到,我没有那个特权。因此-返回SYS,为read_user授予特权,以便他可以创建同义词,然后再次返回read_user并重复以下语句:
SQL> connect sys@xe as sysdba
Enter password:
Connected.
SQL> grant create synonym to read_user;
Grant succeeded.
SQL> connect read_user/ru@xe
Connected.
SQL> create synonym dept for scott.dept;
Synonym created.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
我建议您阅读我写的内容并将其应用于您的情况。希望您会成功。祝你好运!