MySQL只读模式通过read_only参数防止意外写入,普通用户无法执行写操作但SUPER用户可绕过;永久生效需配置文件设置,super_read_only可进一步限制SUPER用户。
MySQL 的只读模式(read-only)主要用于防止意外写入,常见于从库、备份节点或高可用架构中的只读实例。开启后,普通用户无法执行 INSERT、UPDATE、DELETE、DROP、CREATE 等写操作,但 SUPER 权限用户仍可绕过限制。
这是最常用的方式,通过修改系统变量 read_only 实现。该参数动态生效,无需重启 MySQL 服务:
为避免服务重启后失效,需在 MySQL 配置文件(如 my.cnf 或 my.ini)的 [mysqld] 段落下添加:
然后重启 MySQL 服务。注意:仅对非 SUPER 用户生效;SUPER 用户(如 root)默认不受限制,若需限制,应配合 super_read_only 使用。
MySQL 5.7.8+ 支持 super_read_only,它在 read_only 基础上进一步限制 SUPER 权限用户的写操作:
er is running with the --super-read-only option so it cannot execute this statement
设置完成后,建议用普通账号测试写操作是否被拒绝,并确认复制状态未受影响(尤其在主从环境中):
Slave_SQL_Running: Yes)