#### 13.7.1.7 重命名用户声明

[](<>)[](<>)[](<>)

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

这[`重命名用户`](rename-user.html)语句重命名现有的 MySQL 帐户。不存在的旧帐户或已存在的新帐户会发生错误。

使用[`重命名用户`](rename-user.html), 你必须有全局[`创建用户`](privileges-provided.html#priv_create-user)特权，或[`更新`](privileges-provided.html#priv_update)的特权`mysql`系统架构。当。。。的时候[`只读`](server-system-variables.html#sysvar_read_only)系统变量已启用，[`重命名用户`](rename-user.html)另外需要[`CONNECTION_ADMIN`](privileges-provided.html#priv_connection-admin)特权（或已弃用的[`极好的`](privileges-provided.html#priv_super)特权）。

从 MySQL 8.0.22 开始，[`重命名用户`](rename-user.html)如果任何要重命名的帐户被命名为`定义者`任何存储对象的属性。（也就是说，如果重命名帐户会导致存储的对象成为孤立对象，则该语句将失败。）无论如何要执行该操作，您必须拥有[`SET_USER_ID`](privileges-provided.html#priv_set-user-id)特权;在这种情况下，该语句成功并显示警告而不是失败并显示错误。有关其他信息，包括如何识别哪些对象将给定帐户命名为`定义者`属性，见[孤立存储对象](stored-objects-security.html#stored-objects-security-orphan-objects).

每个帐户名称都使用中描述的格式[第 6.2.4 节，“指定帐户名称”](account-names.html).例如：

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

账户名的主机名部分，如果省略，默认为`'%'`.

[`重命名用户`](rename-user.html)使旧用户拥有的特权成为新用户拥有的特权。然而，[`重命名用户`](rename-user.html)不会自动删除旧用户创建的数据库或其中的对象或使其无效。这包括存储的程序或视图，其`定义者`属性命名旧用户。如果这些对象在定义者安全上下文中执行，则尝试访问这些对象可能会产生错误。（有关安全上下文的信息，请参阅[第 25.6 节，“存储对象访问控制”](stored-objects-security.html).)

权限更改生效，如中所示[第 6.2.13 节，“权限更改生效时”](privilege-changes.html).
