IAM用户登录AWS Redshift报用户不存在如何解决
问题原因
你对Redshift IAM认证的逻辑存在误解,报错核心原因有三点:
- Redshift IAM认证默认不会自动在数据库内创建对应用户,只有显式开启自动创建参数时,才会在首次登录时自动生成数据库用户
- IAM认证的数据库用户会自动加
IAM:前缀做标识,和本地原生密码用户区分,所以报错中显示的用户是IAM:dba-admin而非你传入的dba-admin - 你给IAM用户授予的集群完全操作权限属于Redshift管控面权限,仅用于操作集群配置、快照等云资源,和数据库内部的登录、数据操作权限是两套独立体系,不会自动映射。
解决方法
二选一即可:
方案1:开启自动创建用户(推荐运维场景使用)
- 用CLI生成临时凭证时,补充
--auto-create参数,首次登录时Redshift会自动创建对应数据库用户:
aws redshift get-cluster-credentials --cluster-identifier db --db-user dba-admin --duration-seconds 7200 --auto-create
- 如果直接用Redshift Query Editor v2登录,在登录配置页勾选Auto create database user选项,选择对应IAM身份登录即可,无需手动输入密码,控制台会自动传递自动建用户的参数。
注意:自动创建的用户默认没有任何数据库操作权限,首次登录后需要用集群超级用户账号给其授予对应 schema、表的读写或管理员权限。
方案2:提前手动创建关联IAM的数据库用户
如果不想开启自动创建,可以先用集群超级用户登录数据库,执行SQL创建匹配的IAM用户:
-- 创建IAM认证用户,禁止密码登录 CREATE USER "IAM:dba-admin" PASSWORD DISABLE; -- 按需授予权限,例:授予系统管理员角色 GRANT ROLE sysadmin TO "IAM:dba-admin";
注意创建时用户名必须带IAM:前缀,否则无法和IAM身份匹配。
补充说明
如果后续使用IAM Role、IAM Identity Center(SSO)身份登录Redshift,逻辑完全一致:要么开启自动创建用户参数,要么提前在库内创建带对应身份前缀的数据库用户,同时单独配置库内操作权限。
内容的提问来源于stack exchange,提问作者qUEnbcAr
相关产品推荐
相关产品推荐

