CentOS 7 安装 MariaDB 10.5 替换系统自带 MySQL 步骤?

文章导读
CentOS 7 已停止维护,系统自带 MariaDB 5.5 版本过旧,安装 MariaDB 10.5 需先卸载冲突的 mariadb-libs 库并配置官方 Yum 源。操作风险在于卸载系统库可能影响 postfix 等依赖包,生产环境必须先备份数据。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

CentOS 7 已停止维护,系统自带 MariaDB 5.5 版本过旧,安装 MariaDB 10.5 需先卸载冲突的 mariadb-libs 库并配置官方 Yum 源。操作风险在于卸载系统库可能影响 postfix 等依赖包,生产环境必须先备份数据。

先说结论:CentOS 7 环境下可以通过官方 Yum 源安装 MariaDB 10.5,但必须处理系统自带库的依赖冲突。

  • 适合:CentOS 7 系统需要更高数据库版本且无法升级操作系统的场景
  • 先看:卸载 mariadb-libs 前确认 postfix 等服务的依赖关系
  • 验收:安装完成后验证服务状态及数据目录权限

命令速用版

# 1. 备份数据
mysqldump -u root -p `--all-databases` > backup.sql

# 2. 卸载系统自带库(注意依赖风险)
yum remove mariadb-libs `--nodeps`

# 3. 配置 MariaDB 10.5 Yum 源
cat > /etc/yum.repos.d/MariaDB.repo <<EOF
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.5/centos7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

# 4. 安装服务端与客户端
yum install MariaDB-server MariaDB-client

# 5. 启动服务
systemctl start mariadb
systemctl enable mariadb

为什么会这样

CentOS 7 默认仓库仅包含 MariaDB 5.5,该版本已停止功能更新且存在安全漏洞。MariaDB 10.5 属于 LTS 长期支持版本,但官方 RPM 包与系统自带的 mariadb-libs 存在文件冲突。直接安装会报错依赖冲突,必须先移除系统库才能继续。

分步处理

第一步:数据备份
执行全量备份防止升级失败导致数据丢失。确认备份文件生成且大小正常。
mysqldump -u root -p `--all-databases` > /root/backup_$(date +%F).sql

第二步:处理依赖冲突
系统自带的 mariadb-libs 被 postfix 依赖,强制卸载可能导致邮件服务异常。若服务器不使用邮件功能,可添加 `--nodeps` 参数忽略依赖检查。
rpm -qa | grep mariadb yum remove mariadb-libs `--nodeps`

CentOS 7 安装 MariaDB 10.5 替换系统自带 MySQL 步骤?

第三步:配置仓库
创建.repo 文件指向 MariaDB 官方 10.5 版本仓库。CentOS 7 架构通常为 amd64,需确保 baseurl 地址匹配。
vi /etc/yum.repos.d/MariaDB.repo

第四步:安装与初始化
安装完成后运行安全脚本,设置 root 密码并移除匿名账户。
yum install MariaDB-server MariaDB-client mysql_secure_installation

怎么验证是否生效

通过客户端命令查看版本号,确认显示 10.5 字样。检查 systemd 服务状态是否为 active (running)。
mysql `--version` systemctl status mariadb

CentOS 7 安装 MariaDB 10.5 替换系统自带 MySQL 步骤?

登录数据库执行 SQL 查询版本信息,确认服务端内核版本匹配。
mysql -u root -p -e "SELECT VERSION();"

常见坑

1. postfix 服务启动失败
卸载 mariadb-libs 后 postfix 可能无法启动。若不需要邮件服务可忽略,若需要则需重新编译或寻找兼容库。

2. 数据目录权限错误
全新安装后 /var/lib/mysql 权限可能不属于 mysql 用户。启动失败时检查日志。
chown -R mysql:mysql /var/lib/mysql

3. 防火墙拦截
默认端口 3306 可能被 firewalld 拦截。外部连接需放行端口。
firewall-cmd `--zone`=public `--add-port`=3306/tcp `--permanent`

CentOS 7 安装 MariaDB 10.5 替换系统自带 MySQL 步骤?

常见问题

升级过程会丢失原有数据吗?

覆盖安装通常保留 /var/lib/mysql 数据,但跨大版本升级存在兼容风险,必须提前备份。

CentOS 7 停止维护影响 MariaDB 使用吗?

不影响。MariaDB 官方仓库独立于 CentOS 仓库,只要网络能访问 yum.mariadb.org 即可正常安装更新。

可以直接 yum update 升级吗?

不可以。系统默认源没有 10.5 版本,必须配置 MariaDB 官方源并手动指定版本安装。

参考来源

  • MariaDB Knowledge Base: MariaDB 10.5 Release Notes
  • CentOS Wiki: CentOS 7 End of Life
  • MariaDB Downloads: Yum Repository Configuration