Я использую PostgreSQL 9.4 для Windows 7 SP1 64bit, и у меня есть проблема при отзыве ролей. Предположим, у меня три пользователя: Тейлор, Мишель и суперпользователи. Как Postgres, я признаю роль «utente» Тейлор с опцией администратораPostgreSQL не рекурсивно отменяет роли
[email protected]:5432
GRANT utente TO taylor WITH ADMIN OPTION;
Тогда, как Тейлор, Выдаая ролью utente к Michelle
[email protected]:5432
GRANT utente TO michelle;
Наконец, как Postgres, Я отменяю роль utente от тейлоровского
[email protected]:5432
REVOKE utente FROM taylor
роль должны быть рекурсивно отозван Michelle тоже, потому что она получила роль только из Тейлор. Но это не так, Тейлор теряет роль, но мишель держит его. Я попытался запустить команду с опцией RESTRICT, которая должна помешать ее исполнению, но она не работает, команда выполняется точно так же, тэйлор теряет роль, а michelle сохраняет ее. Может ли кто-нибудь объяснить мне это, пожалуйста?
Спасибо.
* «Роль должна была быть рекурсивно отозвана из мишель, потому что она получила роль от Тейлора» *. Это большое предположение. Во многих случаях это было бы очень нехорошо. Представьте, что taylor устанавливает учетную запись пользователя michelle, а затем покидает компанию. Вы не хотите, чтобы доступ Тейлора был отменен. –
Действительно, по умолчанию он должен применять опцию RESTRICT и не выполнять команду, сообщая мне, что есть зависимые привилегии/роли, которые будут отменены. Если я использую вариант CASCADE, он должен удалить все роли, предоставленные пользователем, из которого я отменяю, но это не так. Я не понимаю, почему. – DevOlly
Вы пытались сделать «REVOKE ADMIN OPTION» для taylor CASCADE; '* before * doing' REVOKE utente FROM taylor CASCADE; '? – Renzo