【保姆级】CentOS 7 安装 MySQL 8.0 完整教程:EOL 源修复+MariaDB 冲突解决+生产级配置
CentOS 7 已于 2024 年 6 月 30 日正式停止维护EOL官方镜像源全部下线。这意味着现在在 CentOS 7 上安装任何软件第一步不再是直接安装而是修复 Yum 源。同时CentOS 7 默认自带的 MariaDB 与 MySQL 8.0 存在严重的包冲突不彻底清理直接安装100% 会报错。这篇教程专为零基础 Linux 用户、毕设学生及后端新手编写全程使用官方 Yum 源覆盖从 0 到生产可用的全流程。每一步都标注了作用、注意事项及失败原因确保一次成功避免在环境配置上浪费数小时。一、 环境清理与 Yum 源修复必做前置在 CentOS 7 EOL 的背景下跳过这一步后续所有yum命令都会报Could not resolve host: mirrorlist.centos.org错误。同时必须彻底卸载系统自带的 MariaDB否则 MySQL 8.0 的依赖库无法安装。修复 Yum 源将源地址切换到 vault 归档仓库确保能正常下载软件包。# 备份并替换源地址sed-is|^mirrorlist|#mirrorlist|g/etc/yum.repos.d/CentOS-Base.reposed-is|^#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g/etc/yum.repos.d/CentOS-Base.repo# 清除缓存并重建yum clean all yum makecache彻底卸载 MariaDB检查并停止 MariaDB 服务删除所有残留文件防止初始化 MySQL 时权限报错。# 检查是否安装 MariaDBrpm-qa|grepmariadb# 停止服务并卸载systemctl stop mariadb systemctl disable mariadb yum remove-ymariadb*# 清理残留文件防止冲突rm-rf/var/lib/mysqlrm-rf/etc/my.cnfrm-rf/etc/my.cnf.d二、 安装 MySQL 8.0 官方 Yum 仓库不要使用系统默认的 Yum 源安装 MySQL那会安装到旧版本或 MariaDB。必须使用 MySQL 官方提供的 Yum 仓库确保安装的是正宗的 MySQL 8.0 社区版且能自动处理依赖关系。下载并安装官方仓库# 下载 MySQL 8.0 Yum 源wgethttps://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm# 安装仓库配置rpm-Uvhmysql80-community-release-el7-7.noarch.rpm# 验证仓库安装成功yum repolist enabled|grepmysql导入 GPG 公钥安装时若报The public key is not installed错误需先导入官方密钥或直接使用--nogpgcheck跳过验证MySQL 8.0.46 新包签名与现有密钥不匹配的已知问题。# 导入 GPG 公钥推荐rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql# 或直接跳过验证安装yuminstall-ymysql-community-server--nogpgcheck三、 启动服务与获取初始密码安装完成后MySQL 不会自动启动也不会生成密码。必须手动启动服务并从日志文件中获取系统自动生成的临时密码该密码包含特殊字符必须完整复制。启动服务并设置开机自启systemctl start mysqld systemctlenablemysqld systemctl status mysqld获取临时密码greptemporary password/var/log/mysqld.log输出示例A temporary password is generated for rootlocalhost: uXk-8h7kD5#冒号后面的uXk-8h7kD5#就是临时密码。四、 安全配置与密码修改MySQL 8.0 默认密码策略为 MEDIUM 级别要求密码包含大小写字母、数字、特殊字符且长度不少于 8 位。生产环境禁止使用弱密码禁止 root 远程裸奔。运行安全配置脚本mysql_secure_installation按提示完成以下操作输入上一步获取的临时密码设置新密码必须满足密码强度策略移除匿名用户禁止 root 远程登录生产环境建议移除 test 数据库刷新权限表临时降低密码策略仅测试环境若测试环境需要设置简单密码可临时降低策略生产环境务必改回。-- 查看当前密码策略SHOWVARIABLESLIKEvalidate_password%;-- 临时降低策略SETGLOBALvalidate_password.policyLOW;SETGLOBALvalidate_password.length4;五、 远程连接与防火墙配置默认情况下MySQL 只允许本地连接。若需使用 Navicat、DBeaver 等工具远程连接需同时配置 MySQL 用户授权和系统防火墙。MySQL 远程授权-- 创建远程用户生产环境禁止使用 root 远程CREATEUSERapp_user%IDENTIFIEDBYStrongPwd123!;GRANTALLPRIVILEGESONapp_db.*TOapp_user%;FLUSHPRIVILEGES;-- 若必须使用 root 远程不推荐ALTERUSERroot%IDENTIFIEDBYStrongPwd123!;GRANTALLPRIVILEGESON*.*TOroot%WITHGRANTOPTION;FLUSHPRIVILEGES;防火墙开放 3306 端口# 开放端口firewall-cmd--zonepublic --add-port3306/tcp--permanentfirewall-cmd--reload# 生产环境建议限制访问源 IPfirewall-cmd--permanent--add-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoltcp port3306 acceptfirewall-cmd--reload六、 核心配置优化与 SELinux 处理MySQL 8.0 默认字符集为 latin1中文会乱码默认连接数过小高并发下会报错。同时SELinux 可能阻止 MySQL 访问数据目录导致启动失败。my.cnf 核心配置编辑/etc/my.cnf在[mysqld]段添加以下配置[mysqld] # 字符集配置UTF8MB4 支持 emoji character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci # 连接数配置根据服务器内存调整 max_connections500 max_connect_errors1000 # 日志配置 log-error/var/log/mysqld.log slow_query_log1 slow_query_log_file/var/log/mysql-slow.log long_query_time2SELinux 配置若启动 MySQL 报权限拒绝错误可临时关闭 SELinux 排查问题# 临时关闭setenforce0# 永久关闭需重启sed-is/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config七、 常见报错解决方案服务启动失败执行journalctl -xe -u mysqld查看日志90% 的启动失败都是权限问题或配置文件语法错误。连接超时检查防火墙是否开放 3306 端口云服务器还需检查安全组规则。密码策略冲突执行SHOW VARIABLES LIKE validate_password%;查看当前策略按需调整。GPG 密钥验证失败安装时添加--nogpgcheck参数或先导入官方 GPG 公钥。八、 总结与后续建议CentOS 7 安装 MySQL 8.0 的核心难点在于 EOL 后的 Yum 源修复和 MariaDB 冲突清理而非 MySQL 本身。只要按顺序执行上述步骤即可零失败完成安装。生产环境部署时建议额外配置 MySQL 主从复制、定期备份脚本、监控告警如 Prometheus Grafana并严格遵循最小权限原则禁止 root 远程登录。若服务器内存小于 2GB需调整innodb_buffer_pool_size等参数避免 MySQL 因内存不足被系统 OOM Killer 杀掉。互动话题你在 CentOS 7 上安装 MySQL 时遇到过哪些坑有没有更优雅的配置方案欢迎在评论区分享你的经验