在宝塔面板中同时运行两个版本的 MySQL 是可行的,但需要手动配置,因为宝塔默认只支持安装一个 MySQL 版本(如 MySQL 5.7 或 MySQL 8.0)。如果你需要同时运行两个不同版本的 MySQL(比如 MySQL 5.7 和 MySQL 8.0),可以采用以下方法:
✅ 方法一:使用宝塔 + 手动编译/安装第二个 MySQL 实例(推荐)
步骤概览:
- 使用宝塔安装一个版本的 MySQL(例如 MySQL 5.7)。
- 手动编译或使用官方二进制包安装另一个版本的 MySQL(例如 MySQL 8.0),并配置为不同端口和数据目录。
🛠️ 详细操作步骤:
1. 在宝塔中安装第一个 MySQL(如 MySQL 5.7)
- 登录宝塔面板。
- 进入「软件商店」→ 搜索
MySQL→ 安装你想要的版本(如 5.7)。 - 安装完成后,它会运行在默认端口
3306。
2. 下载并安装第二个 MySQL 版本(如 MySQL 8.0)
注意:不能通过宝塔再安装一次,否则会冲突。需要手动安装。
(1)下载 MySQL 官方二进制包(推荐)
# 进入临时目录
cd /tmp
# 下载 MySQL 8.0 的 Linux 通用二进制包(根据系统选择)
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
# 解压
tar -xJf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
mv /usr/local/mysql-8.0.36-linux-glibc2.12-x86_64 /usr/local/mysql8
(2)创建用户和目录
# 创建 mysql 用户(如果还没有)
useradd -r -s /sbin/nologin mysql
# 创建数据目录
mkdir /www/server/mysql8_data
chown -R mysql:mysql /www/server/mysql8_data
chown -R mysql:mysql /usr/local/mysql8
(3)初始化数据库
cd /usr/local/mysql8
# 初始化(会生成临时密码)
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8 --datadir=/www/server/mysql8_data
记下输出中的临时密码,用于首次登录。
(4)配置 my.cnf
创建配置文件 /etc/my.cnf8(注意端口和目录不要和宝塔的冲突):
[client]
port = 3307
socket = /tmp/mysql8.sock
[mysqld]
port = 3307
socket = /tmp/mysql8.sock
pid-file = /www/server/mysql8_data/mysql8.pid
basedir = /usr/local/mysql8
datadir = /www/server/mysql8_data
user = mysql
# 其他可选配置
skip-name-resolve
innodb_buffer_pool_size = 128M
(5)启动脚本(可选)
复制启动脚本:
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql8
修改 /etc/init.d/mysql8 中的 basedir 和 datadir:
basedir=/usr/local/mysql8
datadir=/www/server/mysql8_data
(6)启动 MySQL 8.0
service mysql8 start
# 或
/etc/init.d/mysql8 start
(7)设置开机启动
chkconfig --add mysql8
chkconfig mysql8 on
(8)登录并修改密码
/usr/local/mysql8/bin/mysql -u root -p -S /tmp/mysql8.sock -P 3307
进入后修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
✅ 如何使用两个 MySQL?
| 服务 | 端口 | 套接字文件 | 数据目录 |
|---|---|---|---|
| 宝塔 MySQL | 3306 | /tmp/mysql.sock | /www/server/data |
| 手动 MySQL | 3307 | /tmp/mysql8.sock | /www/server/mysql8_data |
- 应用连接时指定不同端口即可。
- 宝塔面板只管理 3306 的那个实例。
⚠️ 注意事项
- 端口不能冲突:第二个 MySQL 必须使用不同端口(如 3307)。
- 数据目录独立:避免数据混乱。
- 防火墙开放端口:如需远程访问,记得放行 3307。
- 宝塔不会管理第二个 MySQL:需要手动维护。
- 资源占用:两个 MySQL 实例会占用更多内存,确保服务器配置足够。
✅ 可选方案:使用 Docker(更简单)
如果你熟悉 Docker,可以用容器运行多个 MySQL 版本,互不干扰:
# 运行 MySQL 5.7
docker run -d --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 运行 MySQL 8.0(映射到 3307)
docker run -d --name mysql80 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
这样更安全、隔离性更好,也便于管理。
总结
| 方法 | 优点 | 缺点 |
|---|---|---|
| 手动安装 | 不依赖 Docker,直接运行 | 配置复杂,需手动维护 |
| Docker | 隔离性好,配置简单 | 需要学习 Docker |
👉 推荐:Docker 方式最简单安全;若不想用 Docker,则手动安装第二个 MySQL 并改端口。
如有具体需求(如 WordPress 用 5.7,新项目用 8.0),也可以进一步帮你配置连接方式。欢迎继续提问!
CLOUD云知道