MySQL 5.7版本说明
如果mysqld启动服务器时没有——skip-grant-tables
选项,它将在启动序列期间将所有授权表内容读入内存。在这一点上,内存中的表对于访问控制是有效的。
如果使用帐户管理语句间接修改授权表,服务器会注意到这些更改,并立即将授权表再次加载到内存中。帐户管理报表在第13.7.1节“帐户管理报表”.例子包括格兰特
,撤销
,设置密码
,重命名用户
.
如果直接使用语句修改授权表,例如插入
,更新
,或删除
(这是不建议的),更改对特权检查没有影响,直到您告诉服务器重新加载表或重新启动它。因此,如果您直接更改授权表,但忘记重新加载它们,则更改已经更改没有影响直到重新启动服务器。这可能会让你想知道为什么你的改变似乎没有什么不同!
要告诉服务器重新加载授予表,请执行刷新特权操作。这可以通过签发一个冲洗的特权
语句或通过执行mysqladmin flush-privileges或mysqladmin重载命令。
重新加载授权表对每个现有客户端会话的权限影响如下:
表和列特权更改将随着客户机的下一个请求生效。
数据库权限更改将在客户端下次执行
使用
声明。db_name
请注意客户端应用程序可以缓存数据库名称;因此,如果不实际更改到不同的数据库,这种效果可能是不可见的。
对于已连接的客户机,全局特权和密码不受影响。这些更改仅在后续连接的会话中生效。
参数启动服务器——skip-grant-tables
选项,它不读取授权表或实现任何访问控制。任何用户都可以连接并执行任何操作,这是不安全的。要使服务器因此启动读取表并启用访问检查,请刷新特权。