在宝塔面板中,默认情况下是不能同时运行多个版本的 MySQL(如 5.6 和 5.7)的,因为它们使用相同的端口(默认 3306),并且服务名称冲突。不过你可以通过以下几种方法实现 MySQL 5.6 和 5.7 同时运行:
✅ 方法一:使用不同端口 + 自定义安装
步骤概览:
- 安装一个版本(如 MySQL 5.6)通过宝塔界面。
- 手动编译或自定义安装另一个版本(如 MySQL 5.7)并指定不同的端口、数据目录、日志目录等。
- 修改配置文件,确保两个服务不冲突。
🔧 具体操作步骤:
1. 使用宝塔安装 MySQL 5.6
- 登录宝塔面板 → 软件商店 → 安装 MySQL 5.6。
- 默认端口为
3306,数据目录一般为/www/server/data
2. 手动安装 MySQL 5.7(使用源码或二进制包)
下载 MySQL 5.7 的二进制包(推荐)
cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql57
创建用户和目录
groupadd mysql57
useradd -r -g mysql57 mysql57
mkdir -p /usr/local/mysql57/data
chown -R mysql57:mysql57 /usr/local/mysql57
初始化数据库
/usr/local/mysql57/bin/mysqld
--initialize-insecure
--user=mysql57
--basedir=/usr/local/mysql57
--datadir=/usr/local/mysql57/data
配置 my.cnf(注意与宝塔的 my.cnf 分开)
新建配置文件:/usr/local/mysql57/my.cnf
[mysqld]
port = 3307
socket = /tmp/mysql57.sock
basedir = /usr/local/mysql57
datadir = /usr/local/mysql57/data
log_error = /usr/local/mysql57/data/error.log
pid-file = /usr/local/mysql57/data/mysql.pid
server-id = 2
skip-name-resolve
设置开机启动
创建服务脚本 /etc/init.d/mysql57,内容如下(简化版):
#!/bin/bash
# chkconfig: 2345 85 15
# description: MySQL 5.7 daemon
MYSQL_DIR=/usr/local/mysql57
MYSQL_USER=mysql57
case "$1" in
start)
echo "Starting MySQL 5.7..."
$MYSQL_DIR/bin/mysqld_safe --defaults-file=$MYSQL_DIR/my.cnf &
;;
stop)
echo "Stopping MySQL 5.7..."
killall mysqld
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
赋予执行权限并设置开机启动:
chmod +x /etc/init.d/mysql57
chkconfig --add mysql57
chkconfig mysql57 on
启动 MySQL 5.7
service mysql57 start
3. 宝塔面板中管理 MySQL 5.6,手动管理 MySQL 5.7
- 宝塔只能识别它自己安装的 MySQL 5.6(端口 3306)
- MySQL 5.7 运行在 3307 端口,需要手动管理,或者写个插件接入宝塔
📌 注意事项
- 两个 MySQL 实例的数据目录、端口、sock 文件必须不同。
- 如果服务器资源有限,不建议同时运行两个数据库实例。
- 宝塔无法直接管理第二个 MySQL,除非你开发插件或修改其代码。
✅ 替代方案:使用 Docker
如果你熟悉 Docker,可以将其中一个 MySQL 版本部署在容器中,避免冲突:
docker run --name mysql57
-p 3307:3306
-e MYSQL_ROOT_PASSWORD=yourpassword
-d mysql:5.7
这样可以在宿主机访问 localhost:3307 来连接 MySQL 5.7,而宝塔运行 MySQL 5.6 在 3306。
🧪 测试连接
你可以使用 Navicat、DBeaver 或命令行测试连接:
mysql -h 127.0.0.1 -P 3307 -u root -p
总结
| 方案 | 是否推荐 | 说明 |
|---|---|---|
| 手动安装第二版本 | ✅ 推荐 | 控制力强,但需手动维护 |
| 使用 Docker 容器 | ✅✅ 强烈推荐 | 隔离性好,便于管理 |
| 宝塔原生支持多版本 | ❌ 不支持 | 宝塔目前只允许安装一个 MySQL |
如你需要我提供完整的脚本或 Docker Compose 示例,请告诉我!
PHPWP博客