news 2026/4/16 0:34:10

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 0:33:43

QGIS布局设计实战:5分钟搞定专业地图格网与CRS投影设置

QGIS布局设计实战:5分钟搞定专业地图格网与CRS投影设置 当你第一次在QGIS中尝试制作专业地图时,是否曾被那些复杂的格网设置和投影选项搞得晕头转向?作为一款开源地理信息系统软件,QGIS的强大功能往往被初学者低估。本文将带你快速…

作者头像 李华
网站建设 2026/4/16 0:33:06

终极指南:使用ncmdump轻松解密网易云音乐NCM文件

终极指南:使用ncmdump轻松解密网易云音乐NCM文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经下载了网易云音乐的NCM格式歌曲,却发现无法在其他播放器上播放?ncmdump就是你的救星&am…

作者头像 李华
网站建设 2026/4/16 0:27:38

TURBOVAC 361涡轮分子泵

TURBOVAC 361涡轮分子泵是一款用于高真空系统的精密真空获得设备,常见于半导体工艺、真空镀膜、分析仪器及科研实验系统中,主要用于在前级泵配合下实现高真空甚至超高真空环境。中间特点:采用多级高速旋转叶轮结构,通过动量传递实…

作者头像 李华