2016-11-17 2 views
0

Я пытаюсь бросить пользовательский вид RedShift, но он всегда терпит неудачу с тем же сообщениемНевозможно удалить пользователя из Redshift

пользователя «XXX» не может быть удален, поскольку пользователь имеет привилегию на некотором объекте;

После поиска Google на нем я узнал, что мне нужно отменить разрешения пользователя, поэтому я запустить несколько отзывать запросы, но я все еще не с тем же сообщением:

Запросы Я побежал:

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 где tableowner как «A_user»;

Для извлекаться выше таблиц запустить

альтер владелец таблицы schemaname.tablename в B_user;

2) Аннулировать все на схеме, где A_user имеет некоторые привилегии

выбирать различные SchemaName из admin.v_get_obj_priv_by_user где usename как 'A_user';

Для извлекаться выше таблиц запустить

отменить все на схеме ХХХХ из A_user;

3) Отмените все на столах, где A_user имеет некоторые привилегии

выбрать различные таблицы из admin.v_get_obj_priv_by_user где usename как 'A_user';

Для извлекаться выше таблиц запустить

фальшренонс все на всех таблиц в схеме ХХХХ от A_user;

4) Убрать имя пользователя по имени;

** Если в одном кластере есть две базы данных, сделайте это для обеих баз данных.

Смежные вопросы