SET DEFAULT ROLE
{NONE | ALL | role [, role ] ...}
TO user [, user ] ...
对于每个在 TO
关键字后立即命名的 用户
,该语句定义了用户连接到服务器并进行身份验证时或在会话期间执行 SET ROLE DEFAULT
语句时将激活的角色。
SET DEFAULT ROLE
是 ALTER USER ... DEFAULT ROLE
的替代语法(见 第 15.7.1.1 节,“ALTER USER 语句”)。然而,ALTER USER
只能为单个用户设置默认值,而 SET DEFAULT ROLE
可以为多个用户设置默认值。另一方面,您可以将 CURRENT_USER
作为 ALTER USER
语句的用户名,而不能用于 SET DEFAULT ROLE
。
SET DEFAULT ROLE
需要以下权限:
-
设置其他用户的默认角色需要全局
CREATE USER
权限或mysql.default_roles
系统表的UPDATE
权限。 -
设置自己的默认角色不需要特殊权限,只要您想要的默认角色已经授予了您。
每个角色名称使用 第 8.2.5 节,“指定角色名称” 中描述的格式。例如:
SET DEFAULT ROLE 'admin', 'developer' TO 'joe'@'10.0.0.1';
角色名称的主机名部分,如果省略,默认为 '%'
。
跟在 DEFAULT ROLE
关键字后的子句允许以下值:
-
NONE
:将默认值设置为NONE
(无角色)。 -
ALL
:将默认值设置为授予账户的所有角色。 -
:将默认值设置为命名的角色,这些角色必须存在并授予账户,并且在执行role
[,role
] ...SET DEFAULT ROLE
语句时。
SET DEFAULT ROLE
和 SET ROLE DEFAULT
是不同的语句:
-
SET DEFAULT ROLE
定义了账户会话中要激活的默认角色。 -
SET ROLE DEFAULT
将当前会话中的活动角色设置为当前账户的默认角色。
有关角色使用示例,请参阅 第 8.2.10 节,“使用角色”。