MySQL8.0账户system_user权限,你了解吗?
MySQL system_user权限介绍
MySQL从8.0.16版本开始,MySQL利用system_user权限来区分普通用户和系统用户。具体表现是:
1、拥有system_user权限的账号,是系统账号
2、没有system_user权限的账号,是普通账号
系统账号可以修改系统账号自身和普通账号;
普通账号只能修改普通账号自身。
system_user权限的影响范围:
1、账号管理方面
具有system_user权限的系统账号,可以对普通账号和其他系统账号进行管理,包含账号的创建、删除、修改,权限的授予和回收,密码修改,或者密码属性修改等(例如修改密码过期时间);
2、kill会话方面
a、kill一个具有system_user权限的账号A持有的会话,你自身执行kill命令的账号B也必须有system_user权限;
b、从MySQL8.0.30开始,
如果账号A将MySQL server置为下线模式(参数offline-mode控制),除非账号B拥有connection_admin权限或者super权限,否则账号B无法创建新的连接,但是账号B老的连接不会被打断。
c、MySQL8.0.16 之前,如果一个用户拥有connection_admin权限或者super权限,则它可以kill任何正在执行的会话和语句。
3、修改存储过程、事件或者视图的定义
想要修改某个存储过程的定义用户,如果原来的账号A拥有system_user权限,那么修改的账号也需要拥有system_user权限。
4、定义强制角色(mandatory role)
首先,我们简单解释下强制角色的概念,mandatory role,它是MySQL8.0里面的一个配置,可以通过下面的语句查看:
<ol><li><p><br></p></li></ol>
show variables like '%manda%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| mandatory_roles | |
+-----------------+-------+
1 row in set (0.00 sec)