在AWS RDS Insance上向用户授予权限

时间:2018-01-30 04:16:14

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

我目前正在使用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

如何将其映射到我在此尝试实现的目标?

2 个答案:

答案 0 :(得分:0)

我建议你不要使用RESOURCE和CONNECT角色。这些在20世纪90年代很流行,因为它们包含了人们可能需要的最常见的特权。但是,最佳做法表示您只应授予特定用户所需的权限。

现在CONNECT只包含CREATE SESSION。 RESOURCE包含几个CREATE 某些特权(表,过程,触发器......)(查询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文档,看一看;也许你会发现一些有用的东西。

答案 1 :(得分:0)

您的案例涉及一个非常特殊的情况,即Oracle数据库对用户的许可。要授予“现有用户”这样的特权(QUOTA UNLIMITED),必须使用以下命令: 更改用户xxxx_userName配额yyyy_tablespaceName不受限制;