#### 13.7.1.9 SET DEFAULT ROLE 语句

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

```
SET DEFAULT ROLE
    {NONE | ALL | role [, role ] ...}
    TO user [, user ] ...
```

对于每个*`用户`*后立即命名`到`关键字，此语句定义当用户连接到服务器并进行身份验证或用户执行[`设置角色默认值`](set-role.html)会议期间的声明。

[`设置默认角色`](set-default-role.html)是替代语法[`ALTER USER ...默认角色`](alter-user.html)（看[第 13.7.1.1 节，“ALTER USER 语句”](alter-user.html)）。然而，[`更改用户`](alter-user.html)只能为单个用户设置默认值，而[`设置默认角色`](set-default-role.html)可以为多个用户设置默认值。另一方面，您可以指定`当前用户`作为用户名[`更改用户`](alter-user.html)声明，而你不能为[`设置默认角色`](set-default-role.html).

[`设置默认角色`](set-default-role.html)需要这些特权：

-   为其他用户设置默认角色需要全局[`创建用户`](privileges-provided.html#priv_create-user)特权，或[`更新`](privileges-provided.html#priv_update)的特权`mysql.default_roles`系统表。

-   为自己设置默认角色不需要特殊权限，只要您希望作为默认角色的角色已授予您。

    每个角色名称都使用中描述的格式[第 6.2.5 节，“指定角色名称”](role-names.html).例如：


```
SET DEFAULT ROLE 'admin', 'developer' TO 'joe'@'10.0.0.1';
```

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

后面的子句`默认角色`关键字允许这些值：

-   `没有`：设置默认为`没有`（没有角色）。

-   `全部`：将默认设置为授予该帐户的所有角色。

-   `*`角色`* [, *`角色`*] ...`：设置默认为命名角色，该角色必须存在并在当时被授予账户[`设置默认角色`](set-default-role.html)被执行。

笔记

[`设置默认角色`](set-default-role.html)和[`设置角色默认值`](set-role.html)是不同的陈述：

-   [`设置默认角色`](set-default-role.html)定义在帐户会话中默认激活哪些帐户角色。

-   [`设置角色默认值`](set-role.html)将当前会话中的活动角色设置为当前帐户默认角色。

    有关角色使用示例，请参阅[第 6.2.10 节，“使用角色”](roles.html).
