2016-11-17 40 views
0

我试图删除用户表单红移删除用户,但它总是失败,出现相同的消息无法从红移

用户“XXX”,因为用户对某些 对象特权不能被丢弃;

继上谷歌搜索,我发现,我需要撤销用户的权限,所以我跑几个吊销查询,但我还是失败了同样的信息:

的疑问,我跑:

revoke all on schema YYY from XXX; 
revoke usage on schema ZZZ from XXX; 
revoke all on database LLL from XXX; 

任何想法,为什么我仍然得到这个失败的消息?

+1

尝试级联选项看到撤销得到传播 – kadalamittai

+0

@ kadalamittai - 谢谢,但它没有帮助。我仍然收到相同的消息 – folky

+0

在https://dba.stackexchange.com/questions/143938/drop-user-in-redshift-which-has-privilege-on-some-object –

回答

1

请在下面部署从GitHub “v_get_obj_priv_by_user” 视图 链接:https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_get_obj_priv_by_user.sql

一旦这样做,请按照下面的步骤

1)A_user ---网友认为有下降

B_user ---旧表的所有权需要映射到此用户。

如果你想改变所有表的所有者属于A_user,然后

选择SCHEMANAME,表名从pg_tables其中表所有者像“A_user”;

对于上面表中检索运行

ALTER TABLE schemaname.tablename所有者B_user;

2)撤消所有图式,其中A_user具有一些特权

选择从admin.v_get_obj_priv_by_user不同SCHEMANAME其中USENAME像 'A_user';

对于上面表中检索运行

撤销所有来自A_user架构XXXX;

3)撤消所有的表上,其中A_user具有一些特权

选择不同的表从admin.v_get_obj_priv_by_user其中USENAME像 'A_user';

对于上面表中检索运行

撤销所有对从A_user架构XXXX所有表;

4)删除用户的用户名;

**如果一个群集中有两个数据库,请对两个数据库都执行此操作。