如何配置mysql只读模式_mysql只读模式设置方法

9次阅读

MySQL 只读模式通过 read_only 参数防止意外写入,普通用户无法执行写操作但 SUPER 用户可绕过;永久生效需配置文件设置,super_read_only 可进一步限制 SUPER 用户。

如何配置 mysql 只读模式_mysql 只读模式设置方法

MySQL 的只读模式(read-only)主要用于防止意外写入,常见于从库、备份节点或 高可用架构 中的只读实例。开启后,普通用户无法执行 INSERT、UPDATE、DELETE、DROP、CREATE 等写操作,但 SUPER 权限用户仍可绕过限制。

一、设置全局 read_only 参数

这是最常用的方式,通过修改系统变量 read_only 实现。该参数动态生效,无需重启 MySQL 服务:

  • 临时启用(重启后失效):
    SET GLOBAL read_only = ON;
  • 临时禁用:
    SET GLOBAL read_only = OFF;
  • 查看当前状态:
    SELECT @@global.read_only;(返回 1 表示开启)

二、永久生效:写入 配置文件

为避免服务重启后失效,需在 MySQL 配置文件(如 my.cnfmy.ini)的 [mysqld] 段落下添加:

read_only = ON

然后重启 MySQL 服务。注意:仅对非 SUPER 用户生效;SUPER 用户(如 root)默认不受限制,若需限制,应配合 super_read_only 使用。

三、增强只读控制:启用 super_read_only

MySQL 5.7.8+ 支持 super_read_only,它在 read_only 基础上进一步限制 SUPER 权限用户的写操作:

  • 启用:
    SET GLOBAL super_read_only = ON;
  • 该参数依赖 read_only=ON 才能生效,且同样支持配置文件持久化:
    super_read_only = ON
  • 启用后,连 root 用户执行写操作也会报错:
    ERROR 1290 (HY000): The MySQL server is running with the –super-read-only option so it cannot execute this statement

四、验证与注意事项

设置完成后,建议用普通账号测试写操作是否被拒绝,并确认复制状态未受影响(尤其在主从环境中):

  • 检查复制线程是否正常:
    SHOW SLAVE STATUSG(确保 Slave_SQL_Running: Yes
  • 普通用户执行 INSERT INTO t1 VALUES (1); 应报错:
    ERROR 1290 (HY000): The MySQL server is running with the –read-only option so it cannot execute this statement
  • 注意:read_only 不影响临时表操作、日志清理(如 PURGE BINARY LOGS)、或存储过程内部逻辑,需结合权限体系综合管控
星耀云
版权声明:本站原创文章,由 星耀云 2026-01-03发表,共计1127字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources