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