Redshift - 无法删除用户 "xyz",因为该用户拥有某个对象
Redshift - user "xyz" cannot be dropped because the user owns some object
尝试在 Redshift 数据库中删除用户 "xyz" 时,我收到错误消息:
user 'xyz' cannot be dropped because the user owns some object.
根据 documentation:
If a user owns an object, first drop the object or change its ownership to another user before dropping the original user
我如何知道用户拥有哪些对象(架构、表、视图、UDF?,...)?
您可以在 pg_tables 中查看特定用户拥有的表和视图
和 pg_views 系统表。
(还有 pg_udf,但它不包含对特定用户的任何引用)
select
case when schemaname='public' then ''
else schemaname+'.' end+tablename
from pg_tables where tableowner = 'xyz'
union
select
case when schemaname='public' then ''
else schemaname+'.' end+viewname
from pg_views where viewowner = 'xyz'
;
就我而言,用户不拥有任何表或视图或我能找到的任何其他内容。我猜对了,被授予特权意味着用户“拥有”某些东西,因为我解决了这个问题:
revoke all privileges on database some_database_name from some_user_name
之后 drop user
命令生效。
由于以下内容以非常简单的方式解决了我的问题,因此我也将此回复复制到此线程中:
在尝试了无数帖子和话题的建议后,awslabs 的 aws-redshift-utils provided relief in the form of admin.v_find_dropuser_objs 观点。它立即识别出剩余的依赖项,从而可以删除有问题的用户。
AWS 的以下博客 post 非常清楚地解释了如何解决此问题:
https://aws.amazon.com/premiumsupport/knowledge-center/redshift-user-cannot-be-dropped/
他们的脚本 v_find_dropuser_objs.sql
link here returns 一个不错的 table 对象类型、对象所有者、用户 ID、模式名称、对象名称、ddl 等
尝试在 Redshift 数据库中删除用户 "xyz" 时,我收到错误消息:
user 'xyz' cannot be dropped because the user owns some object.
根据 documentation:
If a user owns an object, first drop the object or change its ownership to another user before dropping the original user
我如何知道用户拥有哪些对象(架构、表、视图、UDF?,...)?
您可以在 pg_tables 中查看特定用户拥有的表和视图 和 pg_views 系统表。 (还有 pg_udf,但它不包含对特定用户的任何引用)
select
case when schemaname='public' then ''
else schemaname+'.' end+tablename
from pg_tables where tableowner = 'xyz'
union
select
case when schemaname='public' then ''
else schemaname+'.' end+viewname
from pg_views where viewowner = 'xyz'
;
就我而言,用户不拥有任何表或视图或我能找到的任何其他内容。我猜对了,被授予特权意味着用户“拥有”某些东西,因为我解决了这个问题:
revoke all privileges on database some_database_name from some_user_name
之后 drop user
命令生效。
由于以下内容以非常简单的方式解决了我的问题,因此我也将此回复复制到此线程中:
在尝试了无数帖子和话题的建议后,awslabs 的 aws-redshift-utils provided relief in the form of admin.v_find_dropuser_objs 观点。它立即识别出剩余的依赖项,从而可以删除有问题的用户。
AWS 的以下博客 post 非常清楚地解释了如何解决此问题: https://aws.amazon.com/premiumsupport/knowledge-center/redshift-user-cannot-be-dropped/
他们的脚本 v_find_dropuser_objs.sql
link here returns 一个不错的 table 对象类型、对象所有者、用户 ID、模式名称、对象名称、ddl 等