Redshift:截断另一个用户创建的表

问题描述 投票:0回答:2

我试图在 redshift 中截断一个表,但它抛出了以下错误 -

SQL错误[500310] [42501]:亚马逊无效操作:必须 成为关系表的所有者;

我已经把表的所有权限给了用户。正如通过 redshift 的在线文档所检查的那样,我无法像现在在 PostgreSQL 中启用的那样明确授予截断表访问权限。有没有办法或最佳实践来处理这种情况?

amazon-redshift truncate privileges sql-grant dml
2个回答
1
投票

正如您所说,只有表所有者或超级用户才能截断表。有几种选择。

  1. 将表更改为需要截断的用户拥有但这可能不满足其他约束
  2. 将表更改为当前用户,截断并将其更改回以前的用户(需要 DROP 权限)
  3. 删除并重新创建表,但这可能会破坏依赖关系
  4. 创建一个像原始表一样的表,对这个新表执行一个 ALTER TABLE APPEND,然后删除新表(一些限制,比如没有标识列)

1
投票

我知道这是一个老问题,但现在有了答案。

您可以使用 Redshift 基于角色的访问控制授予用户截断其他用户表的能力。

  1. 创建角色
  2. 将 TRUNCATE TABLE 授予新角色
  3. 授予用户角色

此用户现在应该能够截断集群中其他用户的表。

Redshift 系统权限 RBAC

Redshift GRANT 语法

© www.soinside.com 2019 - 2024. All rights reserved.