MySQL :: MySQL 8.0 Reference Manual :: 15.7.1.7 RENAME USER Statement (original) (raw)
15.7.1.7 RENAME USER Statement
RENAME USER old_user TO new_user
[, old_user TO new_user] ...
The RENAME USER statement renames existing MySQL accounts. An error occurs for old accounts that do not exist or new accounts that already exist.
To use RENAME USER, you must have the global CREATE USER privilege, or the UPDATE privilege for themysql
system schema. When theread_only system variable is enabled, RENAME USER additionally requires the CONNECTION_ADMIN privilege (or the deprecatedSUPER privilege).
As of MySQL 8.0.22, RENAME USER fails with an error if any account to be renamed is named as theDEFINER
attribute for any stored object. (That is, the statement fails if renaming an account would cause a stored object to become orphaned.) To perform the operation anyway, you must have theSET_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 theDEFINER
attribute, seeOrphan Stored Objects.
Each account name uses the format described inSection 8.2.4, “Specifying Account Names”. For example:
RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';
The host name part of the account name, if omitted, defaults to'%'
.
RENAME USER causes the privileges held by the old user to be those held by the new user. However,RENAME 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 the DEFINER
attribute names the old user. Attempts to access such objects may produce an error if they execute in definer security context. (For information about security context, seeSection 27.6, “Stored Object Access Control”.)
The privilege changes take effect as indicated inSection 8.2.13, “When Privilege Changes Take Effect”.