最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MySQL 从库怎样进行只读模式的严格设置
时间:2026-07-07 10:46:50 编辑:袖梨 来源:一聚教程网
必须同时启用read_only和super_read_only才能实现真正严格只读;前者拦普通用户,后者拦包括root在内的所有SUPER权限用户,二者需按序配置、写入my.cnf并重启生效,缺一不可。
MySQL 从库要实现真正严格的只读,不能只靠 read_only = ON。它只能阻止普通用户写入,但拥有 SUPER 权限的账号(比如 root)依然能执行 INSERT、DROP TABLE、CREATE FUNCTION 等操作——这会破坏主从一致性,且 binlog 不记录,主库无法同步,数据永久不一致。
必须同时启用 read_only 和 super_read_only
super_read_only 是 MySQL 5.7.8+ 引入的兜底机制,开启后连 SUPER 用户也无法写入,包括建存储过程、触发器、EVENT、甚至 ANALYZE TABLE(MySQL 8.0+ 对系统表也生效)。它和 read_only 是联动的:
-
super_read_only = ON会自动把read_only设为ON -
read_only = OFF会强制关闭super_read_only - 配置文件中,
super_read_only = ON必须写在read_only = ON之后,否则 MySQL 启动失败
永久生效:写进 my.cnf 配置文件
编辑 /etc/my.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 段下添加:
[mysqld]read_only = ONsuper_read_only = ON
保存后重启服务:systemctl restart mysql。重启后检查是否生效:
SHOW VARIABLES LIKE 'read_only';SHOW VARIABLES LIKE 'super_read_only';
两个都返回 ON 才算成功。
临时启用(仅限调试或紧急场景)
动态设置需有 SUPER 权限:
SET GLOBAL read_only = ON;SET GLOBAL super_read_only = ON;
注意:这类设置在 MySQL 重启后失效,生产环境务必用配置文件方式。
验证只读是否真正生效
设好后,任何写操作都会立刻报错,这不是故障,是保护机制正常工作。典型错误:
ERROR 1290 (HY000): The MySQL server is running with the read-only option so it cannot execute this statement
测试语句包括:INSERT、UPDATE、TRUNCATE、DROP TABLE、CREATE TEMPORARY TABLE(部分版本)、CREATE FUNCTION 等。建议用 root 账号实测,确认连高权限用户也被拦截。
相关文章
- 高德地图路线规划显示异常怎么办 07-09
- 漫蛙漫画官方版正版ios如何安装 07-09
- 胖东来官网地址-胖东来官方网站入口地址 07-09
- investopedia官网中文版入口-investopedia国内能用的官方网页版入口地址 07-09
- 一点文学txt小说网站入口-一点文学小说官网入口地址2026最新 07-09
- 易校园怎么绑定微信 07-09