【问题标题】:drop a user in aws redshift在 aws redshift 中删除用户
【发布时间】:2018-04-17 23:23:56
【问题描述】:

我在 redshift 中为数据库创建了一个用户,然后我在架构中授予了一些 SELECT 权限。现在我需要删除,但我不能,因为系统坚持认为即使在撤销所有权限后用户也不能被删除,因为它仍然可以访问某些对象。

当我创建用户时:

CREATE USER etlglue WITH
  PASSWORD '******';

grant select on all tables in schema tbl to etlglue;

现在当我尝试放下时:

REVOKE ALL PRIVILEGES  ON SCHEMA tbl FROM etlglue;
REVOKE ALL PRIVILEGES ON SCHEMA public FROM etlglue;
REVOKE ALL PRIVILEGES  ON DATABASE db FROM etlglue;

DROP USER etlglue;

我什至尝试在 REVOKE 命令中应用 CASCADE,但都没有,我去了文档 here。但是输出:

【问题讨论】:

  • 他们是否可能拥有用户定义的函数或视图?
  • 'DEFAULT PRIVILEGES' 通常可以防止用户被丢弃。这些权限默认应用于用户在模式中创建的对象。 ALTER DEFAULT PRIVILEGES 命令可用于删除它们:docs.aws.amazon.com/redshift/latest/dg/…

标签: amazon-web-services amazon-redshift


【解决方案1】:

使用 aws-labs 中的以下脚本找出您尝试删除的用户拥有哪些对象。

https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminScripts/user_to_be_dropped_objs.sql

在编辑/删除对象之后继续。

【讨论】:

    【解决方案2】:

    撤销架构的权限不会自动撤销授予该架构中的表的权限。尝试执行

    从 etllue 撤消 SCHEMA tbl 中所有表的所有权限。

    连同您的其他 REVOKE 语句。

    【讨论】:

    • 在删除之前我必须去撤销我授予任何访问权限的每个对象的权限
    • 'DEFAULT PRIVILEGES' 通常可以防止用户被丢弃。这些权限默认应用于用户在模式中创建的对象。 ALTER DEFAULT PRIVILEGES 命令可用于删除它们:docs.aws.amazon.com/redshift/latest/dg/…
    • 如何撤销用户的所有默认权限? @VinceHill
    • 您需要在 Redshfit 系统表 PG_DEFAULT_ACL 中找到它们,并生成您需要的 SQL。 docs.aws.amazon.com/redshift/latest/dg/r_PG_DEFAULT_ACL.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2015-01-01
    • 2020-06-16
    • 2018-12-20
    相关资源
    最近更新 更多