Redshift中如何给用户组授予Schema的ALTER TABLE权限及角色疑问
Redshift权限问题解答
关于Redshift Role的说明
Redshift里的Role是权限集合容器,用来批量管理用户权限。你可以把一组权限打包给Role,再把Role分配给多个用户,用户会自动继承Role的所有权限,不用逐个给用户授权,大幅简化权限管理流程。
Redshift的权限设计里,像ALTER TABLE这类系统/DDL权限,不能直接授予单个用户,必须通过Role中转,这就是你执行grant alter table to user报错的核心原因。
给一组用户授予单个Schema的ALTER TABLE权限步骤
按以下操作就能实现需求:
- 创建自定义Role(如果还未创建)
CREATE ROLE schema_alter_role;
- 给Role授予目标Schema的必要权限
首先需要给Role该Schema的USAGE权限(否则无法访问Schema),再授予ALTER TABLE权限:
-- 授予Schema访问权限 GRANT USAGE ON SCHEMA your_target_schema TO ROLE schema_alter_role; -- 授予Schema内所有表的ALTER权限 GRANT ALTER ON SCHEMA your_target_schema TO ROLE schema_alter_role;
如果只想让用户修改Schema内特定表,可指定表进行授权:
GRANT ALTER ON TABLE your_target_schema.target_table TO ROLE schema_alter_role;
- 将需要授权的用户加入Role
把所有需要该权限的用户批量添加到Role中:
GRANT ROLE schema_alter_role TO user1, user2, user3; -- 替换为你的实际用户列表
- 验证权限
可通过查询系统表确认用户已关联目标Role:
SELECT usename, rolname FROM pg_user u JOIN pg_user_members m ON u.usesysid = m.member JOIN pg_roles r ON m.roleid = r.oid WHERE usename IN ('user1', 'user2');
也可以让用户执行ALTER TABLE your_target_schema.your_table ...操作,测试权限是否生效。
内容的提问来源于stack exchange,提问作者user2900369
相关产品推荐
相关产品推荐

