当前位置: 首页 > web >正文

MySQL 的 super_read_only 和 read_only 参数

MySQL 的 super_read_only 和 read_only 参数

一、参数基本概念

1. read_only 参数

  • 作用:控制普通用户是否只能读取数据
  • 影响范围:所有非SUPER权限的用户
  • 默认值:OFF(可读写)

2. super_read_only 参数

  • 作用:控制包括SUPER权限用户在内的所有用户是否只能读取数据
  • 影响范围:所有用户(包括具有SUPER权限的用户)
  • 默认值:OFF(可读写)

二、参数关系与优先级

特性read_onlysuper_read_only
影响普通用户✔️✔️
影响SUPER权限用户✖️✔️
优先级
依赖关系-依赖read_only

重要规则

  1. super_read_only=ON 时,会自动将 read_only 设置为 ON
  2. read_only=OFF 时,super_read_only 必须为 OFF(不能单独设置 super_read_only=ON 而 read_only=OFF)

三、参数设置方法

1. 动态设置(无需重启)

-- 设置只读模式(普通用户)
SET GLOBAL read_only = ON;-- 设置超级只读模式
SET GLOBAL super_read_only = ON;-- 取消只读模式(必须先取消super_read_only)
SET GLOBAL super_read_only = OFF;
SET GLOBAL read_only = OFF;

2. 配置文件设置(需重启)

[mysqld]
read_only=1
super_read_only=1

四、参数使用场景

1. read_only 适用场景

  • 主从复制中,从库设置为只读
  • 报表库、数据分析库等只需读取的环境
  • 系统维护期间防止数据修改

2. super_read_only 适用场景

  • 高安全性要求的只读环境
  • 防止管理员误操作修改数据
  • 关键备份服务器保护
  • 云数据库的灾备实例

五、参数行为验证

1. 普通用户测试

-- 当read_only=ON时
mysql> INSERT INTO test.t1 VALUES(1); 
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement-- 当read_only=OFF时(正常执行)

2. SUPER用户测试

-- 当read_only=ON但super_read_only=OFF时
mysql> INSERT INTO test.t1 VALUES(1); 
Query OK, 1 row affected (0.00 sec)  -- SUPER用户仍可写入-- 当super_read_only=ON时
mysql> INSERT INTO test.t1 VALUES(1);
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement

六、注意事项

  1. 复制环境:从库设置 read_only=ON 不会阻止复制线程写入
  2. 临时表:只读模式仍允许创建临时表
  3. 系统表:某些系统表的更新不受只读模式限制
  4. 权限变更:只读模式不影响GRANT/REVOKE操作
  5. 启动顺序super_read_only 在启动时最后应用

七、相关系统变量

SHOW VARIABLES LIKE '%read_only%';
/*
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| read_only        | ON    |
| super_read_only  | ON    |
+------------------+-------+
*/

八、最佳实践建议

  1. 主从架构:建议从库设置 read_only=ON
  2. 关键备份:建议设置 super_read_only=ON
  3. 变更流程:先设置 read_only=ON,再设置 super_read_only=ON
  4. 取消流程:先取消 super_read_only,再取消 read_only
  5. 监控报警:监控只读状态异常变化

详细内容请查看官方文档:

https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_read_only
https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_super_read_only
http://www.xdnf.cn/news/10077.html

相关文章:

  • 板凳-------Mysql cookbook学习 (九)
  • MQTT的Thingsboards的使用
  • WebFuture:设置不自动删除操作日志
  • Celery简介
  • 全面解析:npm 命令、package.json 结构与 Vite 详解
  • 基于LBS的上门代厨APP开发全流程解析
  • 鸿蒙OSUniApp复杂表单与动态验证实践:打造高效的移动端表单解决方案#三方框架 #Uniapp
  • 特伦斯 S75 电钢琴:奏响极致音乐体验的华丽乐章
  • 大话软工笔记—分离之业务与管理
  • Spring Advisor增强规则实现原理介绍
  • 测试工程师学LangChain之promptTemplate 实战笔记
  • 数据库概念
  • 【论文解读】CVPR2023 PoseFormerV2:3D人体姿态估计(附论文地址)
  • 95套HTML高端大数据可视化大屏源码分享
  • 简单配置RHEL9.X
  • 换ip是换网络的意思吗?怎么换ip地址
  • MySql(八)
  • 当 Redis 作为缓存使用时,如何保证缓存数据与数据库(或其他服务的数据源)之间的一致性?
  • 历年中南大学计算机保研上机真题
  • 开发一款IIS自动检测修复工具
  • ROS 2 中的 robot_state_publisher 和 joint_state_publisher 详解
  • [春秋云镜] CVE-2023-23752 writeup
  • 基于NetWork的类FNAF游戏DEMO框架
  • oracle goldengate实现postgresql 到 postgresql的实时同步
  • 使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)
  • 鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程
  • PyTorch中nn.Module详解
  • C#进阶-ASP.NET WebForms调用ASMX的WebService接口
  • 职坐标精选嵌入式AI物联网开源项目
  • allWebPlugin中间件VLC专用版之截图功能介绍