MySQL 8.0参考手册
MySQL 8.0版本说明
MySQL角色名指的是角色,它被命名为特权的集合。角色使用示例请参见第4.10节,“使用角色”.
角色名具有与帐户名相似的语法和语义;看到第4.4节,“指定帐户名称”.存储在授权表中的它们具有与帐户名称相同的属性,帐户名称在授予表范围列属性.
角色名与帐户名在以下几个方面不同:
角色名中的user部分不能为空。因此,没有”匿名的作用”类似于概念”匿名用户。”
对于帐户名,省略角色名的主机部分将导致的主机部分
“%”
.但不像“%”
在帐户名中,主机的一部分“%”
在角色名中没有通配符属性。例如,对于一个名字“我”@“%”
作为角色名,主机部分(“%”
)只是一个文字值;它没有”任何主机”匹配的属性。角色名的主机部分的Netmask表示法没有意义。
帐户名是允许的
CURRENT_USER ()
在一些上下文。角色名不是。
中的一行是可能的mysql.user
作为帐户和角色的系统表。在这种情况下,任何与属性匹配的特殊用户或主机名在名称用作角色名的上下文中都不适用。例如,您不能在执行以下语句时期望它使用具有用户部分的所有角色来设置当前会话角色myrole
和任何主机名:
设置角色“myrole”@“%”;
相反,该语句将会话的活动角色设置为具有确切名称的角色“myrole”@“%”
.
因此,通常只使用用户名部分来指定角色名,而隐式地指定主机名部分“%”
.使用非。指定角色“%”
如果您打算创建一个既可以作为角色,又可以作为允许从给定主机连接的用户帐户的名称,那么主机部分可能会很有用。