centos7中配置多个mysql版本
你当前的系统中已经安装了 MySQL 8,并且你现在希望在不删除 MySQL 8 的前提下安装 MySQL 5.7,这是完全可行的,但需要注意以下几点:
🔍 场景说明
- 目标:同时保留 MySQL 8,并新增安装 MySQL 5.7。
- 适用场景:
- 某些旧应用(如 Zabbix)需要依赖 MySQL 5.7。
- 其他服务仍然使用 MySQL 8。
🚫 注意事项(关键点)
- 不能使用默认端口 3306 同时运行两个 MySQL 实例,否则会冲突。
- MySQL 5.7 和 8 的数据目录不能相同。
- 需要分别配置两个实例的服务名、端口、socket、datadir 等参数。
- 建议使用 多实例部署方式 来共存。
✅ 推荐方案:MySQL 多实例部署(并行运行)
步骤概览:
| 步骤 | 内容 |
|---|---|
| 1️⃣ | 安装 MySQL 5.7(RPM 或二进制) |
| 2️⃣ | 配置独立的数据目录和端口 |
| 3️⃣ | 修改配置文件 my.cnf 或新建一个配置文件 |
| 4️⃣ | 初始化数据库 |
| 5️⃣ | 启动 MySQL 5.7 实例 |
| 6️⃣ | 设置开机启动(可选) |
🛠️ 具体操作步骤(以 CentOS 7/8 为例)
✅ 第一步:下载并安装 MySQL 5.7 的 RPM 包
你可以从 MySQL 官方归档站点 下载 MySQL 5.7 的 RPM 包,例如:
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.44-1.el7.x86_64.rpm
然后安装:
sudo rpm -ivh mysql-community-server-5.7*.rpm --nodeps
⚠️ 如果提示与 MySQL 8 的某些库冲突,可以使用
--replacepkgs或--force参数强制安装。
✅ 第二步:创建新的数据目录和配置文件
创建数据目录和日志目录:
sudo mkdir -p /var/lib/mysql57
sudo chown -R mysql:mysql /var/lib/mysql57
创建专用配置文件 /etc/my57.cnf:
[mysqld]
port=3307
socket=/var/lib/mysql57/mysql.sock
datadir=/var/lib/mysql57
server-id=1
log-error=/var/lib/mysql57/error.log
pid-file=/var/lib/mysql57/mysqld.pid
skip-name-resolve
✅ 第三步:初始化 MySQL 5.7 数据库
sudo mysqld --defaults-file=/etc/my57.cnf --initialize-insecure
--initialize-insecure表示不会生成随机密码,适合测试环境。生产环境建议使用--initialize。
✅ 第四步:启动 MySQL 5.7 实例
sudo mysqld --defaults-file=/etc/my57.cnf &
或者用完整命令指定参数启动:
sudo /usr/sbin/mysqld --defaults-file=/etc/my57.cnf --user=mysql
✅ 第五步:连接 MySQL 5.7 实例
mysql -S /var/lib/mysql57/mysql.sock -u root
或者指定端口连接(如果已配置):
mysql -h 127.0.0.1 -P 3307 -u root
🧪 验证两个版本是否都正常运行
# 查看 MySQL 8 是否运行
systemctl status mysqld
# 查看 MySQL 5.7 是否运行
ps aux | grep mysqld | grep my57
🔄 可选:将 MySQL 5.7 实例加入 systemd(开机自启)
创建一个服务文件 /etc/systemd/system/mysql57.service:
[Unit]
Description=MySQL 5.7 Instance
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my57.cnf
Restart=always
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable mysql57
sudo systemctl start mysql57
📋 总结
| 项目 | MySQL 8 | MySQL 5.7 |
|---|---|---|
| 端口 | 3306 | 3307 |
| socket 文件 | 默认位置 | /var/lib/mysql57/mysql.sock |
| 数据目录 | 默认 /var/lib/mysql |
/var/lib/mysql57 |
| 配置文件 | /etc/my.cnf |
/etc/my57.cnf |
| 启动方式 | systemctl start mysqld |
systemctl start mysql57 |
📌 提示
- 如果你是用于 Zabbix,请确保 Zabbix Server 使用的是 MySQL 5.7 的 socket 或 IP:Port。
- 如果你不想长期维护多个 MySQL 实例,也可以考虑使用 Docker 容器化部署 MySQL 5.7,更加灵活方便。

浙公网安备 33010602011771号