MySQL 8.0和MariaDB的选择
小型 VPS、自建环境、不依赖云厂商生态的话,MariaDB 通常是更合适。
- 安装与维护更省事 大多数 Linux 发行版仓库(Debian/Ubuntu/CentOS/RHEL)默认提供 MariaDB,直接 apt install mariadb-server 或 yum install mariadb-server 就能用,不需要额外仓库。
- 内存占用更友好,对轻量 VPS 来说,MariaDB 能多留出一块内存给 PHP/NGINX。
- 典型 1–2 GB RAM VPS:
- MariaDB 10.11 经过简单调优可常驻 100–150 MB。
- MySQL 8.0/8.4 即使调优,也常驻 150–250 MB。
粗算:MariaDB 比 MySQL 通常能省出 30–40% 的常驻内存(极简场景更明显)。
- 典型 1–2 GB RAM VPS:
- 功能够用
- 常见建站应用(WordPress、Discuz、Nextcloud、常规 PHP/Python 框架)都能直接跑,不需要 MySQL 的特殊新特性。只要你避免重度用 MySQL 8 专属的 JSON/角色权限/数据字典特性,兼容性基本没问题。
一、容器里执行导出 MySQL 8 的两个库
建议先让写入型应用(如 Chevereto、博客后台)进维护模式,避免迁移过程中有新数据写入。
- 进 MySQL 容器:
docker exec -it 1Panel-mysql-8Q8h bash
- 容器内用
mysqldump导出(把db1 db2换成你的真实库名):
mysqldump -u root -p \
--databases db1 db2 \
--single-transaction --routines --triggers --events \
--set-gtid-purged=OFF --default-character-set=utf8mb4 \
> /tmp/dump.sql
会提示输入 root 密码。导出完成后退出容器
exit。
- 把导出文件拷到:
宿主机运行,不是容器内运行
docker cp 1Panel-mysql-8Q8h:/tmp/dump.sql ./dump.sql
备份好
./dump.sql;你的“回滚保险”。
二、 新建一个 MariaDB 10.11 容器(与 MySQL 并存一会儿)
1Panel 的应用商店装 MariaDB(端口映射到宿主机 3307,避免与现有 3306 冲突)。
健康检查一下:
docker logs -f 1Panel-mariadb-W9vZ
三、 导入到 MariaDB
- 边解压边清理边导入 MySQL 8 默认常用 utf8mb4_0900_ai_ci;MariaDB 多用 utf8mb4_unicode_ci。
gunzip -c /root/dump.sql.gz \
| sed -e 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' \
-e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/g' \
| docker exec -i 1Panel-mariadb-W9vZ sh -lc "mysql -uroot -p'密码'"
- 导入后检查
docker exec -it 1Panel-mariadb-W9vZ mysql -uroot -p'密码' -e "SHOW DATABASES; USE chevereto; SHOW TABLES; USE typecho; SHOW TABLES;"
四、应用的数据库连接到 MariaDB
- 两个库各建业务账号
docker exec -it 1Panel-mariadb-W9vZ mysql -uroot -p'mariadb_***6' -e "\
CREATE USER 'chev'@'%' IDENTIFIED BY '强密码1'; \
GRANT ALL PRIVILEGES ON chevereto.* TO 'chev'@'%'; \
CREATE USER 'typ'@'%' IDENTIFIED BY '强密码2'; \
GRANT ALL PRIVILEGES ON typecho.* TO 'typ'@'%'; \
FLUSH PRIVILEGES;"
chev’@‘%’
用户名 = chev,主机 = %
@‘%’ 是这个用户的“来源限制条件”,% 表示任意来源
% 表示允许这个用户从 任意 IP 连接(只要有密码就能登录)
如果写成 ‘chev’@‘localhost’
只允许从 本机 登录
‘chev’@‘127.0.0.1’
只允许从 127.0.0.1 登录
应用里配置数据库连接时,账号就写 chev,密码写你设定的 ‘强密码1’
- 配置运用
- Chevereto:把环境变量/配置里的 DB 连接改为 MariaDB(Host 用容器名
1Panel-mariadb-W9vZ),然后重启容器。 - Typecho:编辑
config.inc.php(或安装向导保存的配置),同样改到 MariaDB。
注意:端口:容器间通信请用 3306,不是 3307(3307 只是在“宿主机→容器”的映射端口)。