
这是 WordPress 站点健康提示数据库版本过低。MariaDB 10.6 社区版已在 2026年7月 停止维护(EOL)。WordPress 出于安全和性能考虑,建议运行 MariaDB 10.11 LTS(长期支持版)或 11.4 LTS。
第一步:逻辑备份(最关键)
必须把服务起来,才能用 mysqldump:
1. 执行逻辑备份(用 TCP 连接方式,避开 socket 报错)
mysqldump -uroot -p -h 127.0.0.1 --single-transaction --routines --triggers --events --all-databases > /root/mdb_all_$(date +%F).sql
2. 确认备份文件有效(看大小不为0,且有内容)
ls -lh /root/mdb_all_*.sql
head -n 5 /root/mdb_all_*.sql
第二步:停服务,做物理备份(防万一)
逻辑备份(mysqldump)成功后,再停掉服务做物理文件备份(升级前最后一道防线):
# 1. 停止网站和数据库(让用户稍等几分钟)
systemctl stop nginx php-fpm mariadb
# 2. 物理备份数据目录(请根据你源码安装的实际路径修改)
cp -a /usr/local/mariadb/var /root/mariadb_datadir.bak
# 3. 备份配置文件
cp /etc/my.cnf /etc/my.cnf.10.5.bak
(datadir 路径看你源码装时的 -DMYSQL_DATADIR,一般在 /usr/local/mysql/data 或 /usr/local/mariadb/var)
第三步:开始编译升级
# 依赖(CentOS7 要的都在这对)[6,18](@ref)
yum install -y cmake3 boost-devel ncurses-devel openssl-devel \
bison libevent-devel libaio-devel zlib-devel pcre2-devel lz4-devel \
snappy-devel zstd
ln -sf /usr/bin/cmake3 /usr/bin/cmake
cd /usr/local/src
git clone --branch 10.11 https://github.com/MariaDB/server.git mariadb-10.11
cd mariadb-10.11
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.11 \
-DMYSQL_DATADIR=/usr/local/mariadb/var \
-DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci
make -j1 && make install # 2G 内存必须 -j1

3.1.报错原因确认
核心报错 fatal: unable to access 'https://github.com/wolfSSL/wolfssl.git/': Encountered end of file 和 No MariaDB Connector/C!。
根本原因:
MariaDB 10.11 在编译时需要拉取内部依赖库(如 wolfSSL、Connector/C 等)。由于你的阿里云服务器在国内,直接连接 GitHub 克隆子模块时网络被阻断或超时断连。同时,CMake 检测到缺少核心依赖(Connector/C),因此中止了配置。
3.2.确认服务已停止的命令(生产环境必备)
在执行升级或物理备份前,必须确保旧服务已完全停止,避免数据损坏或端口冲突。
查看服务状态(推荐)
systemctl status nginx mariadb php-fpm
如果 systemctl 显示停止但仍有残留进程,用此命令检查:
ps -ef | grep -E 'nginx|mysql|mariadb|php-fpm'
判断标准:输出结果中只能看到包含 grep 的行,不能看到 nginx、mysqld 或 php-fpm 的主进程。如果有,说明没停干净。
检查端口监听
netstat -tlnp | grep -E '80|443|3306|9000'
执行以下命令,若无任何输出才是绝对干净:
ps -ef | grep -E 'nginx|mysqld|php-fpm' | grep -v grep
3.3.修复报错并继续编译(针对 2核2G 源码安装环境)
方案 1:跳过 wolfSSL,使用系统 OpenSSL(最快)
既然 CentOS 7 已安装 openssl-devel,直接告诉 CMake 用系统自带的 SSL 库,不去网上拉取 wolfSSL。
清理失败的构建缓存(必须做,否则旧错误保留):
cd /usr/local/src/mariadb-10.11/build
rm -rf ./*
重新执行 CMake(加入 -DWITH_SSL=system):
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.11 \
-DMYSQL_DATADIR=/usr/local/mariadb/var \
-DSYSCONFDIR=/etc \
-DWITH_SSL=system \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci
如果仍然报错,请尝试方案2
方案 2:下载官方完整源码包(最稳妥的源码方式)
官方打包的 Tarball 源码包里已经包含了所有子模块,不会在编译时联网拉取:
# 删除报错的源码目录
rm -rf /usr/local/src/mariadb-10.11
cd /usr/local/src
# (建议在本地电脑用代理下载好,再上传到服务器,或用 wget 尝试)
wget https://archive.mariadb.org/mariadb-10.11.7/source/mariadb-10.11.7.tar.gz
# 建议用 yum install -y lrzsz(rz -e)
# 上传成功后
tar -zxvf mariadb-10.11.7.tar.gz
cd mariadb-10.11.7
# 重新创建 build 目录并跑 CMake(用路径 1 的参数)
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.11 -DMYSQL_DATADIR=/usr/local/mariadb/var -DSYSCONFDIR=/etc -DWITH_SSL=system -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci

执行单线程编译(必须用 -j1)
cd /usr/local/src/mariadb-10.11.7/build
make -j1
make install
报错:

报错原因解读
- 核心报错:
Protocol "https" not supported or disabled in libcurl。 - 触发场景:MariaDB 的 CMake 构建脚本在编译时自动执行下载步骤(
download-libfmt),试图从 GitHub 下载libfmt-8.0.1.zip依赖包。 - 根本原因:
- 系统
libcurl缺陷:CentOS 7 自带的curl版本较老,且编译时使用的是 NSS 而不是 OpenSSL,导致底层的libcurl不支持 HTTPS 协议。当构建脚本调用它下载 GitHub 上的 HTTPS 链接时直接报错。 - GitHub 网络连通性差:即使修复了 curl,在国内服务器直连 GitHub 下载大文件也极易超时失败。
- 系统
修复与继续编译方案
3.3.1.推荐:手动下载并预置依赖(推荐,不断开当前编译)
既然自动下载失败,可以手动下载并放到指定目录:
- 在本机或能翻墙的电脑上下载:下载
https://github.com/fmtlib/fmt/archive/refs/tags/8.0.1.zip(可用代理或迅雷)。 - 上传到服务器:使用
rz -E或scp将下载好的8.0.1.zip上传到服务器的/usr/local/src/mariadb-10.11.7/build/extra/libfmt/src/目录下。把原有的8.0.1.zip删除,然后添加重命名fmt.8.0.1.zip为8.0.1.zip
- 重新执行编译:
cd /usr/local/src/mariadb-10.11.7/build
make -j1
make install

第四步、初始化与配置指南
4.1.初始出数据库
# 创建组(如有请忽略)
groupadd -g $(id -g mysql 2>/dev/null||echo 27) mysql 2>/dev/null
# 创建用户(如有请忽略)
id mysql||useradd -r -g mysql -s /sbin/nologin mysql
# 创建目录(如有请忽略)
mkdir -p /usr/local/mariadb/var
rm -rf /usr/local/mariadb/var/*
# 设备目录的用户和用户组
chown -R mysql:mysql /usr/local/mariadb/var /usr/local/mariadb-10.11
# 编译树里的脚本(装完后 bin 没有,用 build 树或 scripts)
/usr/local/src/mariadb-10.11.7/scripts/mariadb-install-db \
--user=mysql --basedir=/usr/local/mariadb-10.11 --datadir=/usr/local/mariadb/var
# 装完 prefix 里没有 install-db 时,用 mariadbd 初始化:
# /usr/local/mariadb-10.11/bin/mariadbd --initialize-insecure --user=mysql \
# --basedir=/usr/local/mariadb-10.11 --datadir=/usr/local/mariadb/var
4.2.my.cnf(清掉 10.5 弃用项,指新 prefix)
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mariadb-10.11
datadir=/usr/local/mariadb/var
socket=/tmp/mysql.sock
user=mysql
innodb_buffer_pool_size=512M
max_connections=50
performance_schema=OFF
!includedir /etc/my.cnf.d
[Service]
Type=simple
User=mysql
ExecStart=/usr/local/mariadb-10.11/bin/mariadbd --defaults-file=/etc/my.cnf
4.3.systemd(ExecStart 必须是 mariadbd)
cp /usr/local/mariadb-10.11/support-files/systemd/mariadb.service /etc/systemd/system/
# 改上面 ExecStart 后:
systemctl daemon-reload && systemctl enable --now mariadb
4.4.导回数据 + 修表
# 全量导回(root 密码会变回备里的,也可只导 wordpress 库)
/usr/local/mariadb-10.11/bin/mysql -u root -p < /root/mdb_all_2026-08-14.sql
# 或进 mysql> 用 source /root/mdb_all_2026-08-14.sql
mariadb-upgrade -u root -p # 修 mysql 系统表,10.11 会提示已升级就跳过
# WP 专用账号兜底(对应wp-config.php文件里面的账号和密码)
mysql -u root -p -e "CREATE USER IF NOT EXISTS '******'@'localhost' IDENTIFIED BY '********'; GRANT ALL ON 数据名称.* TO '******'@'localhost'; FLUSH PRIVILEGES;"
4.5.起 Web
systemctl start php-fpm nginx
Comments