15.7.1.9 设置默认角色语句
SET DEFAULT ROLE
{NONE | ALL | role [, role ] ...}
TO user [, user ] ...
对于每个 用户
,紧随 TO
关键字后,这个语句定义了哪些角色在用户连接到服务器、身份验证或执行SET ROLE DEFAULT
语句时将被激活。
SET DEFAULT ROLE
是 ALTER USER ... DEFAULT ROLE
的备用语法(见Section 15.7.1.1, “ALTER USER Statement”)。然而,ALTER USER
只能为单个用户设置默认值,而SET DEFAULT ROLE
可以为多个用户设置默认值。反之,SET DEFAULT ROLE
可以指定 CURRENT_USER
作为用户名称,而ALTER USER
则不能。
SET DEFAULT ROLE
需要这些权限:
-
为其他用户设置默认角色需要全局
CREATE USER
权限,或者UPDATE
权限以mysql.default_roles
系统表。 -
为自己设置默认角色不需要特殊权限,只要你想要的角色已经被授予给你。
每个角色名称使用Section 8.2.5, “Specifying Role Names” 中描述的格式。例如:
SET DEFAULT ROLE 'admin', 'developer' TO 'joe'@'10.0.0.1';
角色名称的主机部分,如果省略, defaults to '%'
。
以下是 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节,“使用角色”。