1. 环境准备与Mariadb清理在openEuler 22.03上部署MySQL 5.7之前首先要确保系统环境干净。很多Linux发行版默认会预装Mariadb这可能导致与MySQL的冲突。我遇到过不少因为残留Mariadb组件导致MySQL服务启动失败的案例所以彻底清理非常必要。用这个命令检查已安装的Mariadb组件rpm -qa | grep -i mariadb如果发现有输出结果说明系统存在Mariadb。这时候需要用强制卸载命令清理rpm -qa | grep mariadb | xargs rpm -e --nodeps这里有个坑要注意有些依赖Mariadb-libs的系统组件可能会报错。遇到这种情况时可以先安装mysql-community-libs-compat作为替代再删除Mariadb。实测在openEuler上这个兼容包能完美替代Mariadb的基础库功能。2. RPM安装MySQL 5.72.1 配置Yum源MySQL官方提供了专为EL7设计的Yum源虽然openEuler不是CentOS但兼容性很好。我建议先在/etc/yum.repos.d/下创建专用目录mkdir -p /etc/yum.repos.d/mysql wget -P /etc/yum.repos.d/mysql https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh /etc/yum.repos.d/mysql/mysql57-community-release-el7-11.noarch.rpm这里有个关键步骤处理GPG密钥验证。直接安装可能会报错需要先删除旧密钥再导入新的rm /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-20222.2 安装与启动服务执行安装命令时建议加上-y参数自动确认dnf install -y mysql-community-server安装完成后启动服务前建议先检查文件完整性rpm -V mysql-community-server如果输出为空表示文件完整。启动服务并设置开机自启systemctl start mysqld systemctl enable mysqld首次启动后MySQL会生成临时密码查看方法grep temporary password /var/log/mysqld.log3. 安全加固配置3.1 运行安全向导执行mysql_secure_installation会引导完成以下安全设置修改root密码要求包含大小写字母、数字和特殊字符删除匿名用户禁止root远程登录生产环境强烈建议移除test数据库重载权限表实际操作时建议选择Y删除匿名用户和test库。远程root登录根据需求决定如果有多服务器管理需求可以保留但一定要配合强密码。3.2 关键参数优化编辑/etc/my.cnf时这些参数对生产环境特别重要[mysqld] port3366 # 修改默认端口增加安全性 character-set-serverutf8mb4 # 完整支持emoji等特殊字符 default-storage-engineINNODB max_connections1000 # 根据服务器配置调整 innodb_buffer_pool_size4G # 建议设为物理内存的70%修改端口后要更新SELinux策略semanage port -a -t mysqld_port_t -p tcp 33664. 生产环境专项优化4.1 性能调优在my.cnf中添加这些InnoDB优化参数innodb_flush_log_at_trx_commit1 # 保证ACID特性 sync_binlog1 # 确保binlog写入磁盘 innodb_log_file_size256M # 大事务处理更高效 query_cache_type0 # MySQL 5.7建议关闭查询缓存4.2 监控与维护设置慢查询日志监控性能问题slow_query_log1 slow_query_log_file/var/log/mysql-slow.log long_query_time2 log_queries_not_using_indexes1定期维护建议创建自动化脚本#!/bin/bash # 每周优化表 mysqlcheck -u root -p --auto-repair --optimize --all-databases # 清理旧binlog mysql -u root -p -e PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY)5. 防火墙与SELinux配置openEuler默认使用firewalld开放MySQL端口的正确姿势firewall-cmd --permanent --add-port3366/tcp firewall-cmd --reload如果使用非标准端口还需要更新SELinux策略semanage port -a -t mysqld_port_t -p tcp 3366 restorecon -Rv /var/lib/mysql # 重置安全上下文6. 备份策略实施生产环境必须配置定期备份。推荐使用mysqldump结合cron实现自动化# 每日全量备份脚本 0 2 * * * /usr/bin/mysqldump -u backup -p密码 --all-databases | gzip /backup/mysql_$(date \%F).sql.gz # 保留30天备份 find /backup -name *.sql.gz -mtime 30 -delete对于大型数据库可以考虑使用Percona XtraBackup实现热备份。7. 日常运维命令速查查看运行状态systemctl status mysqld实时监控连接数mysqladmin -u root -p processlist检查表损坏mysqlcheck -u root -p --check --all-databases安全停止服务mysqladmin -u root -p shutdown查看版本信息mysql -V遇到性能问题时可以用这个命令快速查看状态SHOW ENGINE INNODB STATUS\G