×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

3.6.4. Удаление ролей

Поскольку роли могут владеть объектами базы данных и могут иметь привилегии для доступа к другим объектам, удаление роли часто не сводится к простому вызову DROP ROLE. Все объекты, принадлежащие роли, должны быть сначала удалены или переназначены другим владельцам; а все разрешения, предоставленные роли, должны быть отозваны.

Владение объектами можно передавать по одному, используя команды ALTER, например:

ALTER TABLE bobs_table OWNER TO alice;

В качестве альтернативы можно использовать команду REASSIGN OWNED, чтобы переназначить право собственности на все объекты, принадлежащие удаляемой роли, одной другой роли. Поскольку REASSIGN OWNED не может получить доступ к объектам в других базах данных, ее необходимо запускать в каждой базе данных, содержащей объекты, принадлежащие роли. (Обратите внимание, что первый такой запуск REASSIGN OWNED изменит владельца всех общих для разных баз данных объектов, то есть самих баз данных или табличных пространств, которые принадлежат удаляемой роли.)

Как только ценные объекты будут переданы новым владельцам, все оставшиеся объекты, принадлежащие удаляемой роли, можно удалить с помощью команды DROP OWNED. Опять же, эта команда не может получить доступ к объектам в других базах данных, поэтому ее необходимо запустить в каждой базе данных, которая содержит объекты, принадлежащие роли. Также DROP OWNED не удаляет базы данных целиком или табличные пространства, поэтому это необходимо сделать вручную, если роль владеет какими-либо базами данных или табличными пространствами, которые не были переданы новым владельцам.

Команда DROP OWNED также заботится об отзыве любых привилегий, предоставленных целевой роли для объектов, которые ей не принадлежат. Поскольку REASSIGN OWNED не затрагивает такие объекты, обычно необходимо запустить и REASSIGN OWNED, и DROP OWNED (именно в таком порядке!), чтобы полностью удалить зависимости удаляемой роли.

Вкратце, самый общий рецепт удаления роли, которая использовалась для владения объектами, таков:

REASSIGN OWNED BY doomed_role TO successor_role;
DROP OWNED BY doomed_role;
-- повторите вышеуказанные команды в каждой базе данных кластера
DROP ROLE doomed_role;

Если не все принадлежащие роли объекты должны быть переданы одному и тому же преемнику, лучше обработать исключения вручную, а затем выполнить описанные выше шаги, чтобы завершить очистку.

Если попытка выполнить DROP ROLE предпринята при наличии зависимых объектов, будут выведены сообщения с указанием объектов, которые необходимо переназначить или удалить.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению