Account Management Statements DROP ROLE  removes one or more roles (named collections of privileges). To use this statement, you must have the global  DROP ROLE  or  CREATE USER  privilege. When the  read_only  system variable is enabled, DROP ROLE  additionally requires the  CONNECTION_ADMIN  privilege (or the deprecated  SUPER  privilege). As of MySQL 8.0.16, users who have the  CREATE USER  privilege can use this statement to drop accounts that are locked or unlocked. Users who have the  DROP ROLE  privilege can use this statement only to drop accounts that are locked (unlocked accounts are presumably user accounts used to log in to the server and not just as roles). Roles named in the  mandatory_roles  system variable value cannot be dropped. DROP ROLE  either succeeds for all named roles or rolls back and has no effect if any error occurs. By default, an error occurs if you try to drop a role that does not exist. If the  IF EXISTS  clause is given, the statement produces a warning for each named role 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 roles. If the  IF EXISTS clause is given, this includes even roles that do not exist and were not dropped. Each role name uses the format described in Section 6.2.5, “Specifying Role Names” . For example: The host name part of the role name, if omitted, defaults to  ’%’ . A dropped role is automatically revoked from any user account (or role) to which the role was granted. Within any current session for such an account, its adjusted privileges apply beginning with the next statement executed. For role usage examples, see Section 6.2.10, “Using Roles” . The  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. 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, see Orphan Stored Objects. 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. 2862 13.7.1.5 DROP USER Statement DROP USER [IF EXISTS]  user  [,  user ] ... DROP ROLE ’admin’, ’developer’; DROP ROLE ’webapp’@’localhost’;