宝塔如何数据库5.6和5.7同时运行?

在宝塔面板中,默认情况下是不能同时运行多个版本的 MySQL(如 5.6 和 5.7)的,因为它们使用相同的端口(默认 3306),并且服务名称冲突。不过你可以通过以下几种方法实现 MySQL 5.6 和 5.7 同时运行


✅ 方法一:使用不同端口 + 自定义安装

步骤概览:

  1. 安装一个版本(如 MySQL 5.6)通过宝塔界面。
  2. 手动编译或自定义安装另一个版本(如 MySQL 5.7)并指定不同的端口、数据目录、日志目录等。
  3. 修改配置文件,确保两个服务不冲突。

🔧 具体操作步骤:

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 示例,请告诉我!