Mysql SET DEFAULT ROLE语句

来自泡泡学习笔记
跳到导航 跳到搜索
SET DEFAULT ROLE
    {NONE | ALL | role [, role ] ...}
    TO user [, user ] ...


对于紧跟TO关键字后面的每个用户,该语句定义了当用户连接到服务器并进行身份验证时或用户在会话期间执行SET ROLE DEFAULT语句时激活的角色。

SET DEFAULT ROLE是ALTER USER ... DEFAULT ROLE的另一种语法。然而,ALTER USER只能为单个用户设置默认角色,而SET DEFAULT ROLE可以为多个用户设置默认角色。另外,您可以将CURRENT_USER指定为ALTER USER语句的用户名,但不能用于SET DEFAULT ROLE。


SET DEFAULT ROLE需要以下权限:


  • 为其他用户设置默认角色需要全局CREATE USER权限或mysql.default_roles系统表的UPDATE权限。


  • 为自己设置默认角色不需要权限,只要所需的默认角色已授予给您即可。


  • 每个角色名使用特定的描述格式。例如:
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将当前会话中的激活角色设置为当前账户的默认角色。