直接安装官方仓库MariaDB 10.4:先彻底清理旧版mariadb/mysql、清yum缓存;再配置清华镜像源repo;最后yum安装server/client、systemctl启用服务并执行mysql_secure_installation加固,同时在my.cnf中统一设置utf8mb4字符集。

直接装官方仓库的 MariaDB-server 和 MariaDB-client,别用系统默认源(版本太老,CentOS 7 自带的是 5.5),否则中文乱码、JSON 类型、性能优化都踩坑。
清理旧 MariaDB/MySQL 再动手
旧包残留会导致 yum install 报依赖冲突或启动失败,尤其常见于重装或升级场景:
- 先停服务:
systemctl stop mariadb mysqld 2>/dev/null - 卸载所有相关包:
yum remove -y mariadb* mysql* - 删配置和数据目录(⚠️生产环境必须先备份):
rm -rf /var/lib/mysql /etc/my.cnf* - 清 Yum 缓存:
yum clean all && rm -rf /var/cache/yum && yum makecache
执行完再查一遍:rpm -qa | grep -E 'mariadb|mysql',输出为空才算干净。
配置 MariaDB 10.4 官方 repo(不是系统默认源)
CentOS 7 默认源里只有 mariadb-5.5,不支持 utf8mb4 默认字符集、JSON 字段、窗口函数等关键特性。必须换官方或镜像源:
- 写 repo 文件:
cat > /etc/yum.repos.d/mariadb.repo,内容为:
[mariadb] name = MariaDB 10.4 CentOS 7 baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.4/centos7-amd64 gpgkey = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck = 1 enabled = 1 priority = 1
国内推荐清华源,比官方源快且稳定;priority = 1 确保它优先于系统自带源。
验证 repo 是否生效:yum repolist | grep mariadb,能看到条目才继续。
安装 + 启动 + 初次安全加固
这三步顺序不能错,跳过 mysql_secure_installation 会导致 root 空密码、匿名用户、远程 root 登录全开,生产环境等于裸奔:
- 安装:
yum install -y MariaDB-server MariaDB-client - 启动并开机自启:
systemctl enable --now mariadb - 立即执行安全脚本:
mysql_secure_installation
脚本里关键几项必须选 Y:
-
Set root password?→ 一定要设,至少 12 位含大小写字母+数字 -
Remove anonymous users?→Y -
Disallow root login remotely?→Y(除非你明确需要远程管理) -
Remove test database and access to it?→Y
执行完验证:mysql -uroot -p 能登录,mysql -V 输出含 10.4.x 即成功。
中文乱码?立刻改 my.cnf 的字符集
默认配置下,新建库/表仍是 latin1,插入中文直接报错或存成问号。必须在 [mysqld] 和 [client] 段统一指定 utf8mb4:
- 编辑
/etc/my.cnf,在[mysqld]下加:
character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci skip-character-set-client-handshake
- 在文件末尾新增
[client]段:
[client] default-character-set = utf8mb4
重启服务:systemctl restart mariadb。验证方式:mysql -uroot -p -e "SHOW VARIABLES LIKE 'character%';",所有相关变量值都应是 utf8mb4。
注意:已存在的库/表不会自动转换,新创建的才会生效;老数据迁移需单独执行 ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4。


















