宝塔怎么跑两个版本的mysql?

云计算

在宝塔面板中同时运行两个版本的 MySQL 是可行的,但需要手动配置,因为宝塔默认只支持安装一个 MySQL 版本(如 MySQL 5.7 或 MySQL 8.0)。如果你需要同时运行两个不同版本的 MySQL(比如 MySQL 5.7 和 MySQL 8.0),可以采用以下方法:


✅ 方法一:使用宝塔 + 手动编译/安装第二个 MySQL 实例(推荐)

步骤概览:

  1. 使用宝塔安装一个版本的 MySQL(例如 MySQL 5.7)。
  2. 手动编译或使用官方二进制包安装另一个版本的 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 中的 basedirdatadir

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 的那个实例。

⚠️ 注意事项

  1. 端口不能冲突:第二个 MySQL 必须使用不同端口(如 3307)。
  2. 数据目录独立:避免数据混乱。
  3. 防火墙开放端口:如需远程访问,记得放行 3307。
  4. 宝塔不会管理第二个 MySQL:需要手动维护。
  5. 资源占用:两个 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),也可以进一步帮你配置连接方式。欢迎继续提问!