Spec-Zone.ru › MySQL 8.4

15.7.1.5 Выполнение оператора DROP USER

DROP USER [IF EXISTS] user [, user] ...

Оператор DROP USER удаляет одну или несколько учётных записей MySQL и их привилегии. Он удаляет строки привилегий для учётной записи из всех таблиц предоставления привилегий.

Роли, указанные в значении системной переменной mandatory_roles, удалить нельзя.

Для использования DROP USER, необходимо иметь глобальную привилегию CREATE USER или привилегию DELETE для схемы mysql системы. Если системная переменная read_only включена, для DROP USER также требуется привилегия CONNECTION_ADMIN (или устаревшая привилегия SUPER).

DROP USER завершается ошибкой, если какая-либо учётная запись, подлежащая удалению, указана в качестве атрибута DEFINER для любого хранимого объекта. (То есть, оператор завершается ошибкой, если удаление учётной записи приведёт к тому, что хранимый объект станет не связанным.) Чтобы выполнить операцию в любом случае, необходимо иметь привилегию SET_ANY_DEFINER или ALLOW_NONEXISTENT_DEFINER; в этом случае оператор завершается с предупреждением, а не с ошибкой. Дополнительную информацию, включая способ определения объектов, в которых заданная учётная запись указана в качестве атрибута DEFINER, см. в Несвязанные хранимые объекты.

DROP USER либо выполняется для всех указанных пользователей, либо отменяется и не имеет эффекта, если возникает какая-либо ошибка. По умолчанию возникает ошибка, если вы пытаетесь удалить пользователя, которого не существует. Если указан IF EXISTS фрагмент, оператор генерирует предупреждение для каждого пользователя, которого нет, а не ошибку.

Оператор записывается в двоичный журнал, если он выполняется успешно, но не если он завершается ошибкой; в этом случае происходит откат, и изменения не вносятся. Оператор, записанный в двоичный журнал, включает всех указанных пользователей. Если указан IF EXISTS фрагмент, это также включает пользователей, которых нет и которые не были удалены.

Каждое имя учётной записи использует формат, описанный в разделе 8.2.4 «Указание имён учётных записей». Например:

DROP USER 'jeffrey'@'localhost';

Если часть имени учётной записи, относящаяся к хосту, опущена, она по умолчанию равна '%'.

Важно

DROP USER не автоматически закрывает открытые сеансы пользователей. Если пользователь с открытым сеансом удаляется, оператор не вступает в силу, пока сеанс этого пользователя не будет закрыт. После закрытия сеанса пользователь удаляется, и его следующая попытка входа завершается ошибкой. Это сделано намеренно.

DROP USER не автоматически удаляет и не делает недействительными базы данных или объекты в них, созданные старым пользователем. Это включает хранимые программы или представления, для которых атрибут DEFINER указывает удалённого пользователя. Попытки доступа к таким объектам могут привести к ошибке, если они выполняются в контексте безопасности определяющего пользователя. (Дополнительную информацию о контексте безопасности см. в разделе 27.6 «Управление доступом к хранимым объектам».)

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/drop-user.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API