【问题标题】:Granting privileges to user on AWS RDS Insance向 AWS RDS 实例上的用户授予权限
【发布时间】:2018-10-04 20:41:09
【问题描述】:

我目前正在使用impdp 命令在 RDS Oracle 12C 实例中导入转储文件。

在此之前,需要创建少量用户并授予他们所需的权限。

我在其他非 rds 数据库上使用了以下语句。

GRANT UNLIMITED TABLESPACE TO "USERNAME"
GRANT "RESOURCE" TO "USERNAME"
GRANT "CONNECT" TO "USERNAME"
GRANT "EXECUTE_CATALOG_ROLE" TO "USERNAME"

当我在导入之前运行这些命令时,这些命令返回 grant succeeded

现在,当我运行 impdp 时,日志中出现以下错误:

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT                               
ORA-31685: Object type SYSTEM_GRANT:"USRNAME" failed due to insufficient privileges. 
Failing sql is:  

GRANT UNLIMITED TABLESPACE TO "USERNAME"

ORA-39083: Object type ROLE_GRANT failed to create with error:                  
ORA-01924: role 'CONNECT' not granted or does not exist  
Failing sql is:   

GRANT "CONNECT" TO "USERNAME"

其他权限也一样。

我正在使用在启动实例时创建的admin 用户运行这些命令。

我在 AWS RDS on this link 中看到了不同的授予方式

如何将其与我在这里想要实现的目标进行映射?

【问题讨论】:

  • 对于那些也遇到这个问题但不需要Oracle 12的人,请注意这似乎不是RDS Oracle 11.2的问题

标签: database oracle amazon-web-services amazon-ec2 amazon-rds


【解决方案1】:

我建议您不要使用 RESOURCE 和 CONNECT 角色。这些在 1990 年代很流行,因为它们包含人们可能需要的最常见的特权。但是,最佳实践说您应该只授予特定用户所需的权限。

CONNECT 现在只包含 CREATE SESSION。 RESOURCE 包含几个 CREATE something 权限(表、过程、触发器等)(查询 DBA_SYS_PRIVS 以查看所有权限)。你真的需要 CREATE CLUSTER 吗?如果没有,好吧,不要授予它。

尝试分别添加这些权限:

grant create session to username;
grant create table to username;
grant unlimited tablespace to username;
grant *whichever additional privilege USERNAME requires*;

最后,以防万一您没有阅读,这是Importing Data into Oracle on Amazon RDS 文档,请看一下;也许你会发现一些有用的东西。

【讨论】:

  • 我做了所有这些。我的问题是,即使我在导入之前分配了所有授权,它仍然会导致上述错误。
【解决方案2】:

您的案例涉及一个非常特殊的情况,Oracle 数据库对用户的权限。要授予 ALREADY EXISTING USER 这样的权限(QUOTA UNLIMITED),必须使用以下命令完成: ALTER USER xxxx_userName QUOTA UNLIMITED ON yyyy_tablespaceName;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多