【发布时间】:2016-08-27 21:26:59
【问题描述】:
我有一个 12c 的 oracle 数据库。我有一个名为 CIDBADMIN 的管理员用户。 我使用此用户登录数据库并将对象等安装到 SAMPLE_SCHEMA 中。
以下代码:
WHENEVER SQLERROR EXIT SQL.SQLCODE;
SET SERVEROUTPUT on;
ALTER SESSION SET CURRENT_SCHEMA=SAMPLE_SCHEMA;
create table TESTTBL ("some_field" VARCHAR2(1024) NOT NULL);
grant all on TESTTBL to CIDBADMIN;
给出错误:
Error starting at line : 7 in command -
grant all on TESTTBL to CIDBADMIN
Error report -
SQL Error: ORA-01929: no privileges to GRANT
01929. 00000 - "no privileges to GRANT"
*Cause: "ALL" was specified but the user doesn't have any privileges
with the grant option.
*Action: Don't grant privileges on that object.
Commit
我不确定我应该如何纠正这个问题。我已经检查了文档和谷歌,无法弄清楚我能做些什么来纠正这个问题。 我想要一个不需要我以 SAMPLE_SCHEMA 用户身份登录数据库的解决方案。
编辑 001: 我发现如果我以 CIDBADMIN 身份并以 sysdba 角色登录,我就能够执行授权。这解决了我的问题,但我想知道我必须授予 CIDBADMIN 哪些确切权限才能允许它执行此操作并消除以 sysdba 身份登录的需要。
【问题讨论】:
-
您的“管理员”用户已经拥有哪些角色和权限?
-
虽然你改变了用户没有改变的模式。这意味着您正在
sample_schemacidbadmin用户中创建表。并且您不得授予/撤销您自己的特权。因此,在创建对象后,您必须以sample_schama身份连接,然后才能将对象权限授予cidbadmin用户。 -
Alex,我可以授予管理员用户任何我需要的权限。我已经给了它一大笔钱。我只需要知道它需要哪个。 Jaapkota,我不希望我的 ci 机器需要访问所有模式的所有密码,因此以 sample_schema 连接不是一个好的解决方案