在 aws redshift 中删除用户

Posted

技术标签:

【中文标题】在 aws redshift 中删除用户【英文标题】:drop a user in 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/… 【参考方案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

以上是关于在 aws redshift 中删除用户的主要内容,如果未能解决你的问题,请参考以下文章

如何在 aws redshift 中删除 NaN

AWS Redshift 可以删除包含在事务中的表吗?

Redshift:无法删除用户所有者默认权限

AWS Glue to Redshift:是否可以替换,更新或删除数据?

AWS Redshift:出现“and not true”子句时删除挂起

AWS Glue to Redshift:是不是可以替换、更新或删除数据?