Documentation Home

13.7.1.7 RENAME USER 语句

RENAME USER old_user TO new_user
    [, old_user TO new_user] ...

RENAME USER语句重命名现有的 MySQL 帐户。对于不存在的旧帐户或已存在的新帐户,会发生错误。

要使用RENAME USER,您必须具有全局CREATE USER权限或系统架构的UPDATE权限 。启用系统变量mysql时 ,还需要 权限(或已弃用的 权限)。 read_onlyRENAME USERCONNECTION_ADMINSUPER

从 MySQL 8.0.22 开始,RENAME USER 如果要重命名的任何帐户被命名 DEFINER为任何存储对象的属性,则会失败并出现错误。(也就是说,如果重命名帐户会导致存储的对象成为孤立对象,则该语句将失败。)无论如何要执行该操作,您必须拥有 SET_USER_ID特权;在这种情况下,语句成功并发出警告,而不是失败并出现错误。有关其他信息,包括如何识别哪些对象将给定帐户命名为 DEFINER属性,请参阅 孤立存储对象

每个帐户名都使用 第 6.2.4 节“指定帐户名”中描述的格式。例如:

RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';

帐户名的主机名部分(如果省略)默认为 '%'.

RENAME USER导致旧用户拥有的特权成为新用户拥有的特权。但是, RENAME USER不会自动删除或使旧用户创建的数据库或其中的对象失效。这包括DEFINER属性命名旧用户的存储程序或视图。如果它们在定义者安全上下文中执行,则尝试访问此类对象可能会产生错误。(有关安全上下文的信息,请参阅 第 25.6 节,“存储对象访问控制”。)

权限更改生效,如 第 6.2.13 节“权限更改何时生效”中所述。