mysql镜像配置如何设置只读模式_mysql镜像配置只读账户与模式设置方法

来源:这里教程网 时间:2026-02-28 20:25:55 作者:

MySQL 镜像配置只读模式,通常用于主从复制架构中的从库(Slave),防止数据被意外修改。设置方式包括启用数据库实例的只读模式以及创建只读账户,两者结合使用更安全。下面详细介绍如何在 MySQL 镜像中配置全局只读模式和只读用户。

启用 MySQL 全局只读模式

在从库上启用 read_only 可防止普通用户执行写操作。只有拥有 SUPER 或 SYSTEM_VARIABLES_ADMIN 权限的用户才能绕过该限制。

通过 SQL 命令开启只读模式:

SET GLOBAL read_only = ON;

若需持久化设置,避免重启后失效,应在 MySQL 配置文件中添加:

[mysqld]
read_only = 1

对于 Docker 部署的 MySQL 镜像,可在启动容器时挂载自定义配置文件,或通过环境变量方式注入配置。

配置 super_read_only(增强安全性)

即使设置了 read_only,拥有 SUPER 权限的用户仍可写入。为彻底禁止写操作,建议同时启用:

SET GLOBAL super_read_only = ON;
</font><p>该设置会阻止 SUPER 用户执行写操作,进一步提升从库安全性。同样可写入配置文件永久生效:</p><div class="aritcle_card flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/ai/1646" title="Hoppy Copy"><img
                                                                                src="https://www.herecours.com/d/file/efpub/2026/28-28/20260228122710722229.jpg" alt="Hoppy Copy"  onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/ai/1646" title="Hoppy Copy">Hoppy Copy</a>
                                                                        <p>AI邮件营销文案平台</p>
                                                                </div>
                                                                <a href="/ai/1646" title="Hoppy Copy" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </div><font face="Courier New"><pre class="brush:php;toolbar:false;">
[mysqld]
read_only = 1
super_read_only = 1

创建只读数据库账户

除了实例级只读,还应为应用创建权限受限的只读账号,遵循最小权限原则。

创建一个只能查询的用户示例:

CREATE USER 'readonly'@'%' IDENTIFIED BY 'your_password';
GRANT SELECT ON your_database.* TO 'readonly'@'%';
FLUSH PRIVILEGES;

如需限制连接来源,可将 '%' 替换为具体 IP 或内网网段。避免授予 INSERT、UPDATE、DELETE、DROP 等写权限。

Docker 环境下的配置方法

若使用官方 MySQL 镜像部署,可通过挂载配置文件实现开机自动启用只读:

创建配置文件
my.cnf
[mysqld]
read_only = 1
super_read_only = 1
启动容器时挂载配置:
docker run -d \
  --name mysql-slave \
  -v /path/to/my.cnf:/etc/mysql/conf.d/readonly.cnf \
  -e MYSQL_ROOT_PASSWORD=secret \
  mysql:8.0

配置文件放在

/etc/mysql/conf.d/
目录下会自动加载。

基本上就这些。通过开启 read_only 和 super_read_only 参数,并配合只读账户,能有效保障 MySQL 镜像实例处于安全的只读状态,特别适用于从库或数据分析场景。

相关推荐

热文推荐