多库Redshift集群:限制用户/组至单库及组操作跨库问题解决
Redshift集群级组操作的权限控制问题
Redshift的用户和组是集群级全局对象,而非数据库级对象。这意味着你创建的组在整个集群的所有数据库中是同一个实体,所以执行ALTER GROUP添加/删除用户的操作,必然会在集群内所有数据库生效,和你当前连接的目标数据库无关——这是Redshift的设计特性,不是操作错误。
解决思路
如果需要实现「用户仅在特定数据库拥有对应权限」的需求,不要通过修改组的成员关系来控制,而是从数据库级权限分配入手:
- 在目标数据库中,单独管理该组的权限:
- 移除权限:
REVOKE ALL ON SCHEMA [目标schema名] FROM [组名]; - 授予只读权限:
GRANT SELECT ON SCHEMA [目标schema名] TO [组名];
- 移除权限:
- 若需要不同数据库对应不同的用户集合,建议为每个数据库创建独立的专用组(比如
db1_readonly_group、db2_readonly_group),分别在对应数据库中给这些组分配权限,再将用户添加到对应的组中。
关键提示
超级用户执行的ALTER GROUP是集群范围的操作,无法通过连接不同数据库来限制其作用范围。组的成员关系是全局共享的,但权限可以在数据库/schema级别单独配置,通过后者来实现权限的隔离控制。
内容的提问来源于stack exchange,提问作者Waxie
相关产品推荐
相关产品推荐

