在宝塔面板(BT Panel)中安装多个数据库实例,通常指的是同时运行多个不同版本的 MySQL/MariaDB 服务(例如:一个用于生产环境的 MySQL 8.0,另一个用于测试环境的 MySQL 5.7),或者是安装不同的数据库软件(如 MySQL + PostgreSQL)。
宝塔默认只允许在同一端口(3306)上运行一个数据库服务。要实现“两个”数据库,主要有以下两种场景和解决方案:
场景一:需要运行同一类型的多个版本(如 MySQL 5.7 和 MySQL 8.0 共存)
这是最常见的情况。由于它们不能共用同一个端口,你需要通过多实例管理或Docker来实现。
方法 A:使用宝塔自带的“多版本管理”功能(推荐,最简单)
较新版本的宝塔面板(Pro 版或特定社区版插件)支持直接切换或管理多版本,但更通用的方法是利用宝塔的应用商店安装第二个实例,或者手动配置多实例。
如果宝塔界面没有直接的“添加第二个 MySQL"按钮,最稳妥的方式是使用 Docker 容器化部署(见方法 B),或者手动配置 Linux 下的 MySQL 多实例(难度较高,不推荐新手操作)。
最推荐的简易方案:使用 Docker 安装第二个 MySQL
- 确保已安装 Docker 插件:
- 进入宝塔面板 -> 软件商店。
- 搜索
Docker并点击安装(如果没有此插件,请先安装)。
- 创建第一个 MySQL 容器(如果还没做):
- 在 Docker 面板中,选择“镜像”,拉取
mysql:5.7。 - 点击“创建容器”,设置端口映射(例如主机 3306 -> 容器 3306),设置环境变量(root 密码等)。
- 在 Docker 面板中,选择“镜像”,拉取
- 创建第二个 MySQL 容器:
- 再次拉取镜像
mysql:8.0(或其他版本)。 - 点击“创建容器”。
- 关键步骤:在端口映射处,将主机端口改为非冲突端口,例如
3307。 - 设置好对应的数据目录挂载路径(避免覆盖第一个容器的数据)。
- 再次拉取镜像
- 连接方式:
- 程序连接时,第一个库用
localhost:3306,第二个库用localhost:3307。
- 程序连接时,第一个库用
方法 B:手动配置原生多实例(高级用户)
如果你不想用 Docker,必须在系统层面安装两个原生 MySQL 进程,需要手动修改配置文件。
- 下载并编译/安装第二个 MySQL:
- 去 MySQL 官网下载第二个版本的二进制包(如
mysql-8.0.x-linux-glibc2.12-x86_64.tar.gz)。 - 解压到不同目录,例如
/usr/local/mysql2。
- 去 MySQL 官网下载第二个版本的二进制包(如
- 配置多实例参数:
- 复制一份
my.cnf到新目录,修改关键配置:[mysqld] # 必须修改端口,否则冲突 port = 3307 # 必须修改 socket 文件路径 socket = /tmp/mysql2.sock # 必须修改数据目录,防止覆盖 datadir = /data/mysql2_data # PID 文件路径也要改 pid-file = /var/run/mysqld/mysqld.pid
- 复制一份
- 初始化并启动:
- 执行初始化命令(针对新目录):
/usr/local/mysql2/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql2 --datadir=/data/mysql2_data - 启动服务(需编写 systemd 服务文件或直接用脚本启动):
/usr/local/mysql2/bin/mysqld_safe --defaults-file=/path/to/new/my.cnf &
- 执行初始化命令(针对新目录):
- 宝塔集成:
- 宝塔原生的“网站/数据库”菜单可能无法自动识别这个新实例。你通常需要直接在命令行登录
mysql -u root -p -P 3307 -S /tmp/mysql2.sock来管理它。 - 在宝塔中创建网站时,需要在代码配置文件中手动指定端口
3307。
- 宝塔原生的“网站/数据库”菜单可能无法自动识别这个新实例。你通常需要直接在命令行登录
场景二:需要不同类型的数据库(如 MySQL + PostgreSQL)
这种情况不需要特殊技巧,直接安装即可,因为它们使用的端口完全不同。
- 安装 MySQL:
- 进入 软件商店 -> 搜索
MySQL-> 选择版本(如 5.7 或 8.0)-> 点击安装。 - 默认监听端口:
3306。
- 进入 软件商店 -> 搜索
- 安装 PostgreSQL:
- 回到 软件商店 -> 搜索
PostgreSQL-> 选择版本 -> 点击安装。 - 默认监听端口:
5432。
- 回到 软件商店 -> 搜索
- 结果:
- 此时你的服务器同时拥有两个数据库服务。
- 在宝塔的“数据库”列表中,你会看到两个独立的条目,分别对应不同的类型和端口,互不干扰。
总结建议
| 需求场景 | 推荐方案 | 优点 | 缺点 |
|---|---|---|---|
| MySQL + PostgreSQL | 直接安装两个软件 | 简单,宝塔原生支持 | 无 |
| MySQL 5.7 + MySQL 8.0 | Docker 容器化 (端口 3306 + 3307) | 隔离性好,升级方便,不影响宝塔主面板 | 需要安装 Docker 插件 |
| MySQL 5.7 + MySQL 8.0 | 手动配置多实例 | 无需额外资源开销 | 配置复杂,维护困难,宝塔管理不便 |
对于大多数用户,强烈建议使用 Docker 方式来运行多个同类型的数据库实例,这样既保证了环境隔离,又方便备份和管理,且不会弄乱宝塔原有的系统配置。
CLOUD云