努力
加油

新手在阿里云配置MySQL服务,建议选用什么系统镜像?

直接给结论:首选 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 登录,不允许远程连接。你需要:

  1. 进入 MySQL:sudo mysql
  2. 创建用户并授权远程访问:
    CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_strong_password';
    GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  3. (可选)如果你希望 root 也能远程登录,可以修改认证方式:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
    FLUSH PRIVILEGES;
  4. 编辑 /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,开启自动备份策略。