
CentOS 7 MariaDB 10.4 官方Repo部署3步配置与5个安全加固要点在CentOS 7生产环境中部署稳定可靠的数据库服务选择MariaDB 10.4版本通过官方Repo安装是最佳实践之一。相比默认仓库中的老旧版本官方Repo能提供最新功能更新和安全补丁同时避免了源码编译的复杂性。本文将手把手带你完成从仓库配置到安全加固的完整链路特别针对系统管理员和DevOps工程师的实际需求提供可直接复用的配置模板和检查清单。1. 环境准备与仓库配置在开始安装前需要确保系统环境清洁并正确配置官方仓库。许多安装失败案例都源于残留的旧版本组件或错误的仓库地址。清理现有数据库组件如有sudo yum remove -y mariadb* mysql* sudo rm -rf /var/lib/mysql配置官方Repo文件 创建/etc/yum.repos.d/MariaDB.repo文件内容如下[mariadb] name MariaDB baseurl http://yum.mariadb.org/10.4/centos7-amd64 gpgkeyhttps://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck1关键参数说明baseurl中的10.4可根据需要替换为其他版本号gpgcheck1确保安装包经过官方签名验证国内用户可替换为清华镜像源加速下载更新缓存并验证sudo yum makecache fast yum repolist | grep -i mariadb正常应显示类似输出mariadb MariaDB 1002. 安装与基础配置通过官方仓库安装MariaDB 10.4的核心组件sudo yum install -y MariaDB-server MariaDB-client安装完成后立即启动服务并设置开机自启sudo systemctl start mariadb sudo systemctl enable mariadb验证安装版本mysql -V应显示类似mysql Ver 15.1 Distrib 10.4.28-MariaDB, for Linux (x86_64) using readline 5.1初始安全配置 执行内置的安全脚本sudo mysql_secure_installation该脚本会引导完成以下配置设置root密码移除匿名用户禁止root远程登录移除测试数据库重载权限表注意生产环境建议对所有提示都选择Y特别是禁用root远程登录这一项。3. 关键安全加固措施基础安装完成后还需要进行以下深度安全配置才能满足生产环境要求。3.1 网络访问控制编辑/etc/my.cnf.d/server.cnf在[mysqld]段添加bind-address 内网IP地址 skip-networking 0 # 明确设置为0表示启用网络防火墙规则如使用firewalldsudo firewall-cmd --permanent --add-rich-rulerule familyipv4 source address允许访问的IP/24 service namemysql accept sudo firewall-cmd --reload3.2 用户权限最小化创建专用管理账户替代rootCREATE USER adminlocalhost IDENTIFIED BY 复杂密码; GRANT ALL PRIVILEGES ON *.* TO adminlocalhost WITH GRANT OPTION; FLUSH PRIVILEGES;应用账户权限示例CREATE USER appuser应用服务器IP IDENTIFIED BY 另一复杂密码; GRANT SELECT, INSERT, UPDATE, DELETE ON 数据库名.* TO appuser应用服务器IP;3.3 日志审计配置在/etc/my.cnf.d/server.cnf中添加[mysqld] log_error/var/log/mysql/mysql-error.log log_warnings2 slow_query_log1 slow_query_log_file/var/log/mysql/mysql-slow.log long_query_time1 log_queries_not_using_indexes1创建日志目录并授权sudo mkdir /var/log/mysql sudo chown mysql:mysql /var/log/mysql3.4 数据加密配置启用表空间加密需先安装加密插件INSTALL PLUGIN file_key_management SONAME file_key_management.so; CREATE TABLESPACE encrypted_ts ADD DATAFILE encrypted.ibd ENCRYPTIONY;配置SSL传输加密sudo mysql_ssl_rsa_setup --uidmysql在my.cnf中启用SSL[mysqld] ssl-ca/var/lib/mysql/ca.pem ssl-cert/var/lib/mysql/server-cert.pem ssl-key/var/lib/mysql/server-key.pem3.5 定期维护任务设置自动备份脚本示例#!/bin/bash BACKUP_DIR/backup/mysql DATE$(date %Y%m%d) mysqldump -uadmin -p密码 --all-databases --single-transaction | gzip $BACKUP_DIR/full-$DATE.sql.gz find $BACKUP_DIR -type f -mtime 7 -delete添加cron任务0 2 * * * /path/to/backup_script.sh4. 性能调优建议根据服务器配置调整关键参数以下配置适用于4核8GB内存的数据库服务器[mysqld] innodb_buffer_pool_size 4G innodb_log_file_size 512M innodb_flush_log_at_trx_commit 2 innodb_read_io_threads 8 innodb_write_io_threads 8 max_connections 200 query_cache_size 0 # MariaDB 10.4建议禁用查询缓存监控工具推荐Percona PMMPrometheus mysqld_exporter内置的mytop工具5. 故障排查技巧常见问题解决方案GPG密钥验证失败sudo rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB服务启动失败 检查错误日志journalctl -xe -u mariadb连接数耗尽 临时增加连接数SET GLOBAL max_connections 300;空间不足预警 添加监控项检查df -h /var/lib/mysql诊断命令速查表问题类型诊断命令关键指标连接问题SHOW STATUS LIKE Threads%Threads_connected查询性能SHOW PROCESSLISTTime列值缓存命中率SHOW STATUS LIKE Qcache%Qcache_hitsInnoDB状态SHOW ENGINE INNODB STATUSBuffer pool hit rate复制状态SHOW SLAVE STATUS\GSeconds_Behind_Master