需求背景:
我们平时在给用户授权grant语句执行后,都习惯性的执行一个命令flushprivileges;,但是我发现有时候不执行这个命令,授权语句执行之后,权限验证也是OK的,但是有时候发现不执行这个flushprivileges;命令,权限认证还不能通过。
那么到底什么情况下需要执行flshprivileges;?什么情况下不需要执行这个命令呢?
创建用户
当我们创建用户的时候,为了安全起见,我们会在用户名后面增加一个host的限制,标识该用户通过指定的密码,只能通过该IP地址段才可以登录MySQL。
创建用户,语句如下所示:
createuser'user1'@'172.19.%'identifiedby'123456';
上面的示例是创建了一个用户,名称为'user1'@'172.19.%',可以通过172.19.网段,使用123456密码来登录MySQL。
如果用户使用不在172.19.网段,通过这个密码是不能登录MySQL的。言外之意:'user1'@'ip1'和'uesr1'@'ip2'是两个不同的用户,我们不能单纯的靠用户名来确认用户,需要把IP地址也纳入进来。
上述语句执行成功后,MySQL会做两件事情