当前位置: 首页 > news >正文

openEuler 22.03 部署 MySQL 5.7:从 RPM 安装到生产环境安全加固

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.7

2.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-2022

2.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.log

3. 安全加固配置

3.1 运行安全向导

执行mysql_secure_installation会引导完成以下安全设置:

  1. 修改root密码(要求包含大小写字母、数字和特殊字符)
  2. 删除匿名用户
  3. 禁止root远程登录(生产环境强烈建议)
  4. 移除test数据库
  5. 重载权限表

实际操作时,建议选择Y删除匿名用户和test库。远程root登录根据需求决定,如果有多服务器管理需求可以保留,但一定要配合强密码。

3.2 关键参数优化

编辑/etc/my.cnf时,这些参数对生产环境特别重要:

[mysqld] port=3366 # 修改默认端口增加安全性 character-set-server=utf8mb4 # 完整支持emoji等特殊字符 default-storage-engine=INNODB max_connections=1000 # 根据服务器配置调整 innodb_buffer_pool_size=4G # 建议设为物理内存的70%

修改端口后要更新SELinux策略:

semanage port -a -t mysqld_port_t -p tcp 3366

4. 生产环境专项优化

4.1 性能调优

在my.cnf中添加这些InnoDB优化参数:

innodb_flush_log_at_trx_commit=1 # 保证ACID特性 sync_binlog=1 # 确保binlog写入磁盘 innodb_log_file_size=256M # 大事务处理更高效 query_cache_type=0 # MySQL 5.7建议关闭查询缓存

4.2 监控与维护

设置慢查询日志监控性能问题:

slow_query_log=1 slow_query_log_file=/var/log/mysql-slow.log long_query_time=2 log_queries_not_using_indexes=1

定期维护建议创建自动化脚本:

#!/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-port=3366/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
http://www.jsqmd.com/news/647430/

相关文章:

  • 用Python和FastMCP为AI助手打造专属文档搜索工具:从本地Stdio到云端SSE部署全流程
  • Python实战:从零构建Milvus向量数据库应用
  • 工业质检进入“感知觉醒”时代:激光雷达+高光谱+Transformer三模态融合方案首次披露,仅限大会VIP通道获取
  • 告别野火SDK工具链:用系统自带gcc-aarch64搞定RK3588 LVGL移植,实测更稳定
  • 深入解析UVC协议:流媒体设备的数据交换规范
  • 朱雀AI检测用嘎嘎降AI还是比话降AI?深度对比告诉你
  • Kali Linux U盘系统制作全攻略:从镜像下载到持久化存储配置
  • 鲁班猫系统镜像备份与迁移实战:用1张SD卡搞定多设备系统克隆(附镜像瘦身技巧)
  • 智能客服进入“感知智能”分水岭(SITS2026已验证):3个月内未升级多模态能力的团队,将面临首波客户流失预警
  • 超越CuBLAS 85%性能!我的CUDA GEMM优化实战踩坑与调参全记录
  • 从调频到测速:图解FMCW雷达Chirp参数设计原理(含TI MMIC避坑指南)
  • LDAP认证中的AES加密陷阱:为什么你的Nginx和Java解密结果不一致?
  • 从原理到实战:Python手把手实现LDPC码的比特翻转与和积译码
  • 别急着装库!Qt项目链接`-lGL`失败的另类思路:从.pro文件配置到CMake迁移避坑
  • 紧急预警:2024年已发现11起多模态生成偏见致商业合规风险事件!附欧盟AI Act第10条适配自查清单与72小时应急响应模板
  • 振动筛式花生收获机的设计
  • 嘉立创MSPM0G3507移植MPU6050避坑实录:初始化卡死、OLED无显示的三种排查与解决
  • TimeSformer在MMAction2里跑Kinetics400,我的显卡显存不够怎么办?优化与调参实战
  • Comsol超声空化气泡仿真入门:从医学到工业的5个实用案例解析
  • HW攻防演练实战:深度剖析Webshell与内存马的流量指纹与自动化查杀
  • LaTeX公式一键转换Word:学术写作的终极效率革命
  • 【音视频流媒体进阶:从网络到 WebRTC】第21篇-实战:多人视频会议系统
  • Linux终端游戏开发实战:用kbhit()实现非阻塞键盘控制(附完整代码)
  • 别再只懂欧拉角了!深入浅出聊聊MPU6050姿态解算的‘三驾马车’:欧拉角、四元数与轴角
  • md2pptx:让Markdown文档秒变专业演示文稿的开源转换工具
  • AMD FirePro™ S7150 X2 虚拟显卡在虚拟化环境中的性能优化与配置技巧
  • 2025-2026年全球幼猫猫粮品牌推荐:五款口碑产品评测对比顶尖多猫家庭性价比高好评 - 品牌推荐
  • 从PR曲线到混淆矩阵:用mmdetection analysis_tools全面评估你的检测模型(2.24.1版)
  • 【音视频流媒体进阶:从网络到 WebRTC】第22篇-实战:超低延迟直播方案
  • 不锈钢彩涂板服务商