top of page



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

The DROP USER statement removes one or more MySQL accounts and their
privileges. It removes privilege rows for the account from all grant

Roles named in the mandatory_roles system variable value cannot be

To use DROP USER, you must have the global CREATE USER privilege, or
the DELETE privilege for the mysql system schema. When the read_only
system variable is enabled, DROP USER additionally requires the
CONNECTION_ADMIN privilege (or the deprecated SUPER privilege).

As of MySQL 8.0.22, DROP USER fails with an error if any account to be
dropped is named as the DEFINER attribute for any stored object. (That
is, the statement fails if dropping an account would cause a stored
object to become orphaned.) To perform the operation anyway, you must
have the SET_USER_ID privilege; in this case, the statement succeeds
with a warning rather than failing with an error. For additional
information, including how to identify which objects name a given
account as the DEFINER attribute.

DROP USER either succeeds for all named users or rolls back and has no
effect if any error occurs. By default, an error occurs if you try to
drop a user that does not exist. If the IF EXISTS clause is given, the
statement produces a warning for each named user that does not exist,
rather than an error.

The statement is written to the binary log if it succeeds, but not if
it fails; in that case, rollback occurs and no changes are made. A
statement written to the binary log includes all named users. If the IF
EXISTS clause is given, this includes even users that do not exist and
were not dropped.

For example:

DROP USER 'jeffrey'@'localhost';

The host name part of the account name, if omitted, defaults to '%'.


bottom of page