Pre-General Availability Draft: 2018-02-21
DROP USER [IF EXISTS] user [, user] ...
DROP USER statement removes
one or more MySQL accounts and their privileges. It removes
privilege rows for the account from all grant tables.
Roles named in the
mandatory_roles system variable
value cannot be dropped.
DROP USER, you must have
CREATE USER privilege,
DELETE privilege for the
mysql database. When the
read_only system variable is
DROP USER additionally
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
Each account name uses the format described in Section 6.2.4, “Specifying Account Names”. For example:
DROP USER 'jeffrey'@'localhost';
The host name part of the account name, if omitted, defaults to
DROP USER does not
automatically close any open user sessions. Rather, in the
event that a user with an open session is dropped, the
statement does not take effect until that user's session is
closed. Once the session is closed, the user is dropped, and
that user's next attempt to log in will fail. This
is by design.
DROP USER does not automatically
drop or invalidate databases or objects within them that the old
user created. This includes stored programs or views for which
DEFINER attribute names the dropped user.
Attempts to access such objects may produce an error if they
execute in definer security context. (For information about
security context, see
Section 24.6, “Access Control for Stored Programs and Views”.)