如果你在 CentOS 上手动下载过 MySQL 的 tar.gz 包,大概率体会过这种感觉:解压十分钟,启动报错半小时,最后发现是缺了某个动态库。在 Linux 服务器上装 MySQL,从来不是缺教程,缺的是一套能一次跑通、出了问题也知道去哪查的流程。这篇东西是我从多次重装和帮同事救火里攒下来的实践记录,目标读者是刚接手 Linux 服务器、需要在 CentOS 上部署 MySQL 的运维和开发。看完你至少能搞明白三件事:装之前要确认什么,装的过程每一步在干什么,以及装完之后为什么别人还是连不上你的数据库。
MySQL 安装本身不算难,但你观察那些翻车案例会发现,绝大多数问题都出在装之前和装之后。装之前没确认系统版本和残留包,装完之后没处理权限、防火墙、SELinux。所以这篇文章不会只给你几条命令,而是把每一步背后的逻辑讲清楚,方便你举一反三。
1. 动手前先想清楚:装 MySQL 前必须确认的几件事
1.1 先看清你的 CentOS 属于哪个“流派”
很多人上来就执行安装命令,报了错才开始查系统版本,这是最常见的弯路。CentOS 7、CentOS 8、CentOS Stream 9 虽然都叫 CentOS,但软件包管理、默认行为和生命周期差异很大,尤其是用 MySQL 官方 Yum 源的时候,el7 和 el8 的 RPM 包不能混用。你在 CentOS 8 上强行装 el7 的包,大概率会遇到依赖冲突,或者装上之后服务起不来。
动手前先看清楚系统版本:
bash复制cat /etc/redhat-release
cat /etc/os-release
uname -m
第一个命令给你发行版名称和版本号,第二个命令能看到更详细的 ID、版本 ID,第三个命令告诉你架构是 x86_64 还是 aarch64。后面从官网下载 RPM 包时,el7 还是 el8、x86_64 还是 aarch64,都靠这几个信息判断。
这里多提一句生命周期问题。旧版 CentOS 停止维护后,默认镜像源地址会迁移到 vault 路径,如果你直接执行 yum install,可能遇到源 404 或者镜像列表为空。这也是为什么我建议你优先使用 MySQL 官方维护的 Yum 源,而不是依赖系统自带的 AppStream 源——官方源的生命周期和版本更新策略是独立管理的,长期看更稳定。
1.2 MySQL 8.0 还是 5.7,怎么选
现在新装 MySQL,除非有特殊兼容性要求,否则我建议直接上 8.0。8.0 和 5.7 相比,几个核心差异会影响你的日常使用:
- 默认字符集从 latin1 改成了 utf8mb4,对中文、Emoji 的支持明显更好,省去了一堆建表时的字符集设置。
- 身份认证插件默认是 caching_sha2_password,安全性更高,但老版本的客户端驱动可能不兼容,后面会专门讲这个问题。
- 窗口函数、公共表表达式(CTE)这些现代 SQL 特性终于补齐了,写复杂统计查询会舒服很多。
- 查询缓存(Query Cache)在 8.0 里被移除了。早期很多“优化建议”会让你开 query_cache,现在这套思路已经过时,网上看到相关配置直接忽略。
但如果你是在维护一个跑了好几年的老项目,代码里可能用了老版本驱动的连接串,甚至用了 5.7 才有的语法或行为,那这时候就不要盲目升级。稳妥做法是装 5.7,或者先装 8.0 做兼容性测试再决定。版本选择本质上是“业务需求优先”还是“技术先进优先”的权衡,没有绝对答案。
1.3 安装方式对比:为什么不推荐自己下载 tar.gz
MySQL 在 Linux 上的安装方式主要有三种:官方 Yum 源安装、RPM 包离线安装、源码编译安装。另外还有 tar.gz 二进制包解压的方式。
tar.gz 二进制包看起来最简单:解压、初始化、启动,三步走。但坑在于依赖。MySQL 运行需要 libaio、numactl 等系统库,tar.gz 包不会替你检查,也不会替你安装。等你执行 mysqld --initialize 发现报错找不到 libaio.so.1,只能再去 yum install,反而绕了一圈。更麻烦的是 systemd 服务文件要自己写,防火墙、SELinux 策略、开机自启这些都得手动配,对新手非常不友好。
源码编译安装适合对性能有极致要求或者需要自定义编译参数的高级用户,普通业务部署完全没有必要。RPM 离线安装适合内网环境或者无法访问外网的服务器,但你需要提前下载好 MySQL server、client、common、libs 等一系列 RPM 包,依赖关系要理清楚,比较繁琐。
所以对绝大多数 CentOS 服务器来说,最省心的方案就是用 MySQL 官方 Yum 源。它帮你处理依赖,提供 systemd 管理脚本,升级也方便,一条 yum update 就能完成小版本更新。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从仓库到服务:用 Yum 安装 MySQL 8.0 的完整操作
2.1 先把系统环境和残留包处理干净
安装 MySQL 之前,先花两分钟检查系统里有没有已经存在的
