mysql中的read_only和super_read_only
在引入super_read_only之前,mysql提供了一个选项read_only。开启read_only之后,会阻止没有super权限的用户执行数据库更新操作。read_only主要用于复制节点。
super_read_only不仅会阻止普通用户,也会阻止具有super权限的用户对数据库写操作。
read_only和super_read_only是有关联的。默认二者都是关闭的:
·如果开启了super_read_only,即使用户有super权限,也会被禁止更新操作
·设置super_read_only=on,也就隐式地设置了read_only=on
·设置read_only=off,也就隐式地设置了super_read_only=off
即使设置read_only=on,mysql还支持以下的操作行为:
·如果是复制节点,replica线程执行update操作
·使用analyze table、optimize table语句。read only是为了避免对表结构或者内容进行修改。而这些命令不会。
·对temporary表进行操作
·向日志表(mysql.general_log、mysql.slow_log)插入记录
·mysql 5.7.16开始,更新performance schema表,比如update、truncate表操作
平时关注的大佬网站上,几天前突然慎重的介绍了一下super_read_only这个参数,搞的我以为有了什么重大改变或bug呢!贴一下以前的笔记吧。