在同一台服务器上同时运行MySQL和MariaDB需用Docker隔离,避免端口(3306)和服务冲突;须先卸载宝塔已装数据库,再通过docker-compose分别映射3307/3308端口部署,并用Adminer或独立phpMyAdmin连接。

宝塔面板里直接装两个数据库服务会冲突
MySQL 和 MariaDB 默认都用 3306 端口、都注册为系统服务、都写入 /etc/my.cnf 或类似配置路径,硬要在同一台服务器上用传统方式共存,基本等于自己给自己埋坑——启动一个另一个就报 Address already in use,或者配置互相覆盖导致无法连接。
所以「同时安装」不是靠宝塔的软件商店点两下,而是得绕开它的服务管理逻辑,用 Docker 把它们隔开。宝塔本身不反对 Docker,反而自带 Docker 管理器(需手动启用),这是可行路径。
Docker 部署前必须关掉宝塔已装的 MySQL/MariaDB 服务
如果之前已在宝塔里装过 MySQL 或 MariaDB(比如通过“软件商店”安装),必须先彻底停用并卸载:进入宝塔「软件管理」→ 找到对应数据库 → 点「停止」→ 再点「卸载」。不卸载干净,Docker 容器启动时仍可能因端口或 socket 文件冲突失败。
检查残留项:
- 运行
ps aux | grep mysql或ps aux | grep mariadb,确认无相关进程 - 检查
/www/server/mysql和/www/server/mariadb目录是否已删除 - 执行
netstat -tuln | grep :3306,确保端口空闲
用 Docker Compose 分别跑 MySQL 和 MariaDB 容器
推荐用 docker-compose.yml 统一管理,避免手动敲一堆 docker run 参数。注意关键隔离点:端口映射、数据卷、容器名、网络别名。
示例 docker-compose.yml:
version: '3.8'
services:
mysql8:
image: mysql:8.0
container_name: mysql8
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: your_mysql_pass
ports:
- "3307:3306" # 主机端口 3307 → 容器内 3306
volumes:
- /www/docker/mysql8/data:/var/lib/mysql
- /www/docker/mysql8/conf/my.cnf:/etc/mysql/my.cnf
networks:
- dbnet
<p>mariadb10:
image: mariadb:10.11
container_name: mariadb10
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: your_mariadb_pass
ports:</p><ul><li>"3308:3306" # 主机端口 3308 → 容器内 3306
volumes:</li><li>/www/docker/mariadb10/data:/var/lib/mysql</li><li>/www/docker/mariadb10/conf/my.cnf:/etc/mysql/my.cnf
networks:</li><li>dbnet</li></ul><p>networks:
dbnet:
driver: bridge要点说明:
- 两个容器不能映射到同一个主机端口,
3307和3308是最安全的选择,避开宝塔默认监控的3306 -
volumes路径建议放在/www/docker/xxx下,方便宝塔文件管理器查看,也符合习惯 - 如果应用需要从 PHP 连接,PHP 代码里 host 填
localhost:3307或localhost:3308,不是127.0.0.1(某些 PHP 版本对 localhost 解析更稳定) - 首次启动后,进容器初始化数据库或导入 SQL 时,用
docker exec -it mysql8 mysql -uroot -p,别用宝塔的 phpMyAdmin——它默认连3306,得手动改配置才能切过去
宝塔 phpMyAdmin 怎么连 Docker 里的数据库
宝塔自带的 phpMyAdmin 默认只认本地 3306,没法直连 Docker 容器。有两种轻量解法:
- 在宝塔「网站」→「phpMyAdmin」设置里,把「访问域名」指向你新建的一个子域名(如
mysql8.yoursite.com),然后在该站点根目录下手动部署一份独立 phpMyAdmin,并修改其config.inc.php中的$cfg['Servers'][$i]['host'] = '127.0.0.1';为'localhost',再加$cfg['Servers'][$i]['port'] = '3307'; - 更省事的是直接用 Adminer(单文件 PHP 工具),上传到任意网站目录,打开即用,连接时填主机
localhost、端口3307或3308、账号密码即可
别试图改宝塔内置 phpMyAdmin 的配置,它每次更新可能被覆盖,而且它的运行环境和 Docker 不在一个网络命名空间里,localhost 指向不对。


















