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

张开发
2026/6/22 4:48:23 15 分钟阅读
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 21接着检查系统库依赖。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的兼容性不同。推荐两种获取方式从官网下载bundle包需要联网机器wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar手动下载各组件包适合严格内网环境mysql-community-commonmysql-community-libsmysql-community-clientmysql-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_names1 # 默认认证插件 default_authentication_pluginmysql_native_password # 连接数设置 max_connections1000特别注意如果修改了数据目录必须确保mysql用户有权限mkdir /home/mysql8.0 chown -R mysql:mysql /home/mysql8.05. 初始化与安全设置初始化是容易出错的环节关键命令mysqld --initialize --usermysql --basedir/home/mysql8.0 --datadir/home/mysql8.0/data初始化后会生成临时密码查看方法grep temporary password /var/log/mysqld.log安全设置建议步骤修改root密码ALTER USER rootlocalhost IDENTIFIED BY ComplexPassword123;创建远程访问账户CREATE USER admin% IDENTIFIED BY AdminPass456; GRANT ALL PRIVILEGES ON *.* TO admin%;移除测试数据库DROP DATABASE test;刷新权限FLUSH PRIVILEGES;6. 服务管理与故障排查启动服务并设置开机自启systemctl start mysqld systemctl enable mysqld常见问题排查启动失败检查/var/log/mysqld.log中的错误信息连接被拒绝确认防火墙规则firewall-cmd --add-servicemysql --permanent firewall-cmd --reload性能问题调整InnoDB缓冲池大小等参数日志管理技巧# 慢查询日志 slow_query_log 1 slow_query_log_file /var/log/mysql-slow.log long_query_time 2 # 错误日志 log_error /var/log/mysqld.log7. 备份与迁移方案离线环境更需要完善的备份策略。推荐两种方式mysqldump基础备份mysqldump -u root -p --all-databases full_backup.sql物理备份需停止服务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监控工具推荐自带客户端SHOW STATUS LIKE Threads_connected; SHOW ENGINE INNODB STATUS;第三方工具需提前下载Percona Toolkitmytop在最近的一个项目中我将这些优化方案应用到一个日均10万查询的系统后平均响应时间从120ms降到了45ms。关键是把innodb_buffer_pool_size设置为物理内存的50-60%并禁用已经过时的query cache。

更多文章