直接给结论:首选 Ubuntu 22.04 LTS 或 Debian 11/12。
如果必须要在“省事”和“专业”之间选一个最稳妥的,我推荐 Ubuntu 22.04 LTS。
下面从实际运维、兼容性、资源占用和社区支持四个维度,给你拆解为什么这么选,以及新手容易踩的坑。
1. 为什么是 Ubuntu/Debian,而不是 CentOS?
很多老鸟或者教程里喜欢推 CentOS,但你要知道,CentOS 8 已经停止维护(EOL),CentOS Stream 的定位更适合内核开发者而非生产环境服务器。 对于新手来说,现在再去折腾 CentOS 7 的遗留问题或者适应 CentOS Stream 的滚动更新节奏,性价比极低。
- 包管理优势:MySQL 官方对 Ubuntu/Debian 的
.deb包支持非常完善。通过官方 APT 源安装 MySQL 8.0+,配置路径、服务启动命令、日志位置都非常规范。 - 社区生态:国内大部分新的云原生教程、Docker 部署指南、甚至阿里云官方的最佳实践文档,底层大多基于 Ubuntu 或 Debian。遇到问题搜到的解决方案,90% 是基于这两者的。
- 安全性与更新:Ubuntu LTS 版本提供 5 年的安全更新,稳定性足够支撑中小型业务。
2. 具体版本选择建议
-
Ubuntu 22.04 LTS (Jammy Jellyfish):
- 推荐理由:目前最平衡的选择。内核较新,对硬件驱动支持好,软件包版本适中(既不会太旧导致兼容性问题,也不会太新导致不稳定)。MySQL 8.0 在上面的表现非常稳定。
- 适用场景:绝大多数个人项目、中小企业官网、API 后端。
-
Debian 11/12 (Bullseye/Bookworm):
- 推荐理由:极度稳定,资源占用比 Ubuntu 略低(因为少了一些预装的服务和界面组件)。如果你喜欢“极简主义”,Debian 是更好的选择。
- 缺点:部分第三方软件的打包可能不如 Ubuntu 及时,但对于 MySQL 这种核心软件,影响不大。
-
避坑指南:不要选 Windows Server
- 除非你的应用强依赖 .NET Framework 且无法迁移,否则不要在云服务器上跑 Windows + MySQL。Windows 本身资源开销大,MySQL 在 Linux 上的性能上限通常更高,且命令行操作效率远高于 GUI。
3. 新手配置 MySQL 的关键步骤(Ubuntu 为例)
选好了镜像,接下来怎么配才不翻车?记住这几个关键点:
A. 使用官方源安装,别用 apt install mysql-server 默认包
阿里云 ECS 默认的 Ubuntu 镜像里的 MySQL 可能是旧版本或精简版。建议添加 MySQL 官方 APT 仓库:
# 导入公钥
sudo apt-get install -y gnupg software-properties-common
wget -qO- https://repo.mysql.com/RPM-GPG-KEY-mysql | sudo gpg --dearmor -o /usr/share/keyrings/mysql-archive-keyring.gpg
# 添加源(以 Ubuntu 22.04 为例)
echo "deb [signed-by=/usr/share/keyrings/mysql-archive-keyring.gpg] http://repo.mysql.com/apt/ubuntu jammy mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql.list
# 更新并安装
sudo apt-get update
sudo apt-get install -y mysql-server
这样安装的 MySQL 版本最新,配置文件结构清晰(通常在 /etc/mysql/mysql.conf.d/mysqld.cnf)。
B. 安全组(防火墙)必须开!
这是新手最容易犯的错误:装了 MySQL,结果远程连不上。
- 登录阿里云控制台 -> ECS 实例 -> 安全组 -> 配置规则。
- 添加入方向规则:
- 协议:TCP
- 端口范围:3306
- 授权对象:
0.0.0.0/0(仅限测试环境;生产环境务必限制为特定 IP 段,比如公司出口 IP 或跳板机 IP)
C. 修改 root 密码和绑定地址
默认情况下,MySQL 8.0 使用 auth_socket 插件,只允许本地 root 登录,不允许远程连接。你需要:
- 进入 MySQL:
sudo mysql - 创建用户并授权远程访问:
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_strong_password'; GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; - (可选)如果你希望 root 也能远程登录,可以修改认证方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES; - 编辑
/etc/mysql/mysql.conf.d/mysqld.cnf,确保bind-address = 0.0.0.0(默认可能是 127.0.0.1)。
D. 字符集设置
在 [mysqld] 部分添加:
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
重启 MySQL 服务:sudo systemctl restart mysql
4. 更优替代方案:直接买 RDS?
作为过来人,我必须说句实话:如果你的预算允许,且不想折腾运维,请直接购买阿里云 RDS MySQL。
- 成本对比:一台最低配的 ECS(如 2核4G)+ 自己装 MySQL,每月费用约 100-200 元。而阿里云 RDS 入门级实例(1核2G)有时会有促销,价格相近,甚至更低。
- RDS 优势:
- 自带备份、监控、高可用架构(主备切换)。
- 自动补丁更新,无需手动升级 MySQL 版本。
- 网络隔离更好,安全性更高。
- 没有“忘记改 root 密码导致被黑客入侵”的风险。
总结建议:
- 学习/练手/极低成本项目:选 Ubuntu 22.04 LTS 镜像,按上述步骤自建 MySQL。
- 正经上线/企业项目:别自己装了,直接买 RDS MySQL,把时间花在业务逻辑上,而不是排查数据库启动失败的问题上。
最后提醒一句:无论哪种方式,定期备份是底线。如果是自建,记得写脚本把数据 dump 出来存到 OSS;如果是 RDS,开启自动备份策略。
云技术博客