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

CentOS环境下MySQL 8.0的离线安装与配置全攻略

1. 环境准备与依赖检查

在开始安装MySQL 8.0之前,我们需要确保CentOS系统环境已经准备就绪。离线安装最大的特点就是无法实时下载依赖包,所以前期检查工作尤为重要。我遇到过不少因为依赖问题导致安装失败的案例,这里把关键检查点都列出来。

首先检查系统是否预装了MariaDB。由于MySQL和MariaDB存在兼容性问题,必须彻底卸载后者。执行这个命令查看已安装的MariaDB组件:

rpm -qa | grep mariadb

如果返回类似mariadb-libs-5.5.64-1.el7.x86_64的结果,需要用rpm -e --nodeps强制卸载。注意保留卸载日志是个好习惯,我习惯重定向到文件:

rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64 >> uninstall.log 2>&1

接着检查系统库依赖。MySQL 8.0需要这些基础库:libaio、numactl、openssl等。在离线环境中,建议提前准备好这些rpm包:

rpm -qa | grep -E 'libaio|numactl|openssl'

如果缺少某些库,需要从CentOS镜像站的Packages目录下载对应版本的rpm包。有个小技巧:在同版本有网络的机器上用yum deplist查看完整依赖关系。

2. 获取与验证安装包

离线安装的核心就是获取完整的安装包集合。MySQL官方提供了rpm bundle包,包含所有必要组件。这里有个坑要注意:不同CentOS版本对应的MySQL包可能有差异,比如El7和El8的兼容性不同。

推荐两种获取方式:

  1. 从官网下载bundle包(需要联网机器):
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
  1. 手动下载各组件包(适合严格内网环境):
    • mysql-community-common
    • mysql-community-libs
    • mysql-community-client
    • mysql-community-server

下载后务必验证文件完整性。我遇到过传输损坏的包导致安装中途失败的情况。用md5校验最可靠:

md5sum mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar

对比官网公布的校验值(通常在下载页面下方)。如果使用浏览器下载,记得禁用下载加速插件,它们有时会导致文件损坏。

3. 安装流程与顺序控制

解压bundle包后,会看到多个rpm文件。安装顺序非常关键,错误的顺序会导致依赖错误。根据我的经验,这个顺序最可靠:

tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm

如果遇到依赖错误,可以尝试--nodeps参数,但慎用。更好的做法是使用yum本地安装自动解决依赖:

yum localinstall mysql-community-*.rpm

安装完成后验证:

rpm -qa | grep mysql

应该看到4-5个已安装的组件。有个细节:安装server包时会自动创建mysql用户,如果自定义安装路径,需要提前创建相应用户和组。

4. 配置文件定制技巧

MySQL 8.0的默认配置文件在/etc/my.cnf,建议先备份原文件:

cp /etc/my.cnf /etc/my.cnf.bak

关键配置项(根据我的生产环境经验):

[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid # 大小写敏感设置(0敏感 1不敏感) lower_case_table_names=1 # 默认认证插件 default_authentication_plugin=mysql_native_password # 连接数设置 max_connections=1000

特别注意:如果修改了数据目录,必须确保mysql用户有权限:

mkdir /home/mysql8.0 chown -R mysql:mysql /home/mysql8.0

5. 初始化与安全设置

初始化是容易出错的环节,关键命令:

mysqld --initialize --user=mysql --basedir=/home/mysql8.0 --datadir=/home/mysql8.0/data

初始化后会生成临时密码,查看方法:

grep 'temporary password' /var/log/mysqld.log

安全设置建议步骤:

  1. 修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Complex@Password123';
  1. 创建远程访问账户:
CREATE USER 'admin'@'%' IDENTIFIED BY 'Admin@Pass456'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
  1. 移除测试数据库:
DROP DATABASE test;
  1. 刷新权限:
FLUSH PRIVILEGES;

6. 服务管理与故障排查

启动服务并设置开机自启:

systemctl start mysqld systemctl enable mysqld

常见问题排查:

  1. 启动失败:检查/var/log/mysqld.log中的错误信息
  2. 连接被拒绝:确认防火墙规则
    firewall-cmd --add-service=mysql --permanent firewall-cmd --reload
  3. 性能问题:调整InnoDB缓冲池大小等参数

日志管理技巧:

# 慢查询日志 slow_query_log = 1 slow_query_log_file = /var/log/mysql-slow.log long_query_time = 2 # 错误日志 log_error = /var/log/mysqld.log

7. 备份与迁移方案

离线环境更需要完善的备份策略。推荐两种方式:

  1. mysqldump基础备份:
mysqldump -u root -p --all-databases > full_backup.sql
  1. 物理备份(需停止服务):
systemctl stop mysqld rsync -av /var/lib/mysql /backup/mysql_data systemctl start mysqld

迁移注意事项:

  • 保持MySQL版本一致
  • 配置文件同步修改
  • 权限设置保持一致
  • 测试环境验证后再上线

8. 性能优化实践

根据服务器配置调整参数(以下为8GB内存服务器示例):

[mysqld] innodb_buffer_pool_size = 4G innodb_log_file_size = 256M innodb_flush_log_at_trx_commit = 2 query_cache_size = 0 table_open_cache = 2000

监控工具推荐:

  1. 自带客户端:
SHOW STATUS LIKE 'Threads_connected'; SHOW ENGINE INNODB STATUS;
  1. 第三方工具(需提前下载):
    • Percona Toolkit
    • mytop

在最近的一个项目中,我将这些优化方案应用到一个日均10万查询的系统后,平均响应时间从120ms降到了45ms。关键是把innodb_buffer_pool_size设置为物理内存的50-60%,并禁用已经过时的query cache。

http://www.jsqmd.com/news/621256/

相关文章:

  • 手把手教你用周立功CAN工具和某宝驱动器搞定Canopen步进电机(附SDO报文详解)
  • 《QMT量化实战系列》多因子策略进阶:动态权重调优与回测验证,年化收益再突破
  • 第三十三课:LIF神经元模型与SpikingJelly实战解析
  • 深入解析C/C++中单冒号(:)与双冒号(::)的六大核心应用场景
  • 别再只盯着天气预报了!用翻斗式雨量传感器DIY一个家庭小气象站(附数据记录方案)
  • CSS滚动条样式自定义兼容性差异_使用伪元素与scrollbar-width
  • 2026软文推广新篇:邯郸市佳铭文化解锁价值重塑与全域增长密码
  • Windows 10环境下STGCN与OpenPose 1.5.0的GPU部署实战
  • SIwave TDR仿真实战:从模型导入到阻抗结果深度解析
  • 程序员维权事件:加班费与股权纠纷——软件测试工程师的专业维权指南
  • 综述文献在文献检索中有什么用?如何用它扩展分支
  • 源码级交付的低代码革命:基于 Spring Boot 的 AI 视频中台二次开发实战
  • EmojiOne Color彩色字体:终极免费表情解决方案
  • 2026奇点大会闭门报告首发(仅限首批200名工程负责人):AI原生测试的7层抽象架构与4类不可逆迁移陷阱
  • 华为企业网络实战:OSPF+VRRP+PAT+MSTP与USG防火墙综合配置指南
  • 若依RuoYi项目实战:手把手教你解决Swagger/Knife4j字段说明缺失问题(附完整代码)
  • 技术社区分裂:理念分歧导致的分家
  • Dreamweaver CC 2019安装与初体验:从下载到第一个网页
  • 2026年乌镇旅游酒排行:乌镇小生三白酒、乌镇小生伴手礼酒、乌镇小生十年陈酒、乌镇小生原浆酒、乌镇小生酒、乌镇手工桂花酒选择指南 - 优质品牌商家
  • 深度学习回归任务中的五大误差指标解析(RMSE、MSE、MAE、MAPE、SMAPE)
  • 2026兰州岩棉板技术全解析:兰州工字钢/兰州异型管/兰州彩钢板/兰州彩钢瓦/兰州扁钢/兰州拉条/兰州接地扁钢/选择指南 - 优质品牌商家
  • WordPress安全加固:3种隐藏wp-admin登录入口的实用方法(附插件对比)
  • MGeo地址相似度识别实战:手把手教你搭建智能地址匹配系统
  • Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语殉
  • 智能宠物喂食器项目复盘:那些硬件选型与软件调试中踩过的坑
  • 别再手动拼中间件了!用Go Kratos框架5分钟搞定一个带链路追踪的微服务
  • 2026年热门的陕汽中心库多家厂家对比分析 - 品牌宣传支持者
  • RCE绕过新思路:0xGame中dc计算器漏洞利用全解析(附GTFOBins实战指南)
  • 全自动铺布机选购指南:核心指标与品牌实力评估
  • ESP32轻量级Sonos控制库:UPnP协议嵌入式实现