MySQL 9.0 发行说明
RENAME USER old_user TO new_user
[, old_user TO new_user] ...
RENAME USER
语句重命名现有的 MySQL 帐户。对于不存在的旧帐户或已存在的新的帐户,将发生错误。
要使用 RENAME USER
,您必须具有全局 CREATE USER
权限,或对 mysql
系统模式具有 UPDATE
权限。当 read_only
系统变量启用时,RENAME USER
还需要 CONNECTION_ADMIN
权限(或已弃用的 SUPER
权限)。
RENAME USER
如果任何要重命名的帐户被命名为任何存储对象的 DEFINER
属性,则会失败并出现错误。(也就是说,如果重命名帐户会导致存储对象成为孤儿,则该语句将失败。)要无论如何执行操作,您必须拥有 SET_ANY_DEFINER
或 ALLOW_NONEXISTENT_DEFINER
权限;在这种情况下,该语句将成功并发出警告,而不是失败并出现错误。有关更多信息,包括如何识别哪些对象将给定帐户命名为 DEFINER
属性,请参见 孤儿存储对象。
每个帐户名称都使用 第 8.2.4 节“指定帐户名称” 中描述的格式。例如
RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';
如果省略帐户名称的主机名部分,则默认为 '%'
。
RENAME USER
会导致旧用户持有的权限成为新用户持有的权限。但是,RENAME USER
不会自动删除或使旧用户创建的数据库或其中的对象失效。这包括旧用户命名的 DEFINER
属性的存储过程或视图。如果它们在定义者安全上下文中执行,则尝试访问此类对象可能会产生错误。(有关安全上下文的详细信息,请参见 第 27.7 节“存储对象访问控制”。)
权限更改生效的时间如 第 8.2.13 节“权限更改生效的时间” 中所述。