在云服务器上安装 MySQL 时,CentOS 和 Ubuntu 的核心差异主要体现在包管理器、默认配置路径、服务管理命令以及安全策略上。虽然 MySQL 本身的行为逻辑一致,但运维操作习惯会有所不同。
以下是具体的对比分析:
1. 包管理器与安装方式
这是最直观的区别,决定了你如何获取软件包。
-
Ubuntu (Debian 系)
- 工具:使用
apt/apt-get。 - 安装步骤:通常需要先添加官方 APT 源(因为系统自带源的版本可能较旧),然后使用
apt install。 - 特点:依赖关系处理非常智能,自动解决依赖冲突。
# 示例流程 sudo apt update sudo apt install mysql-server
- 工具:使用
-
CentOS (RHEL 系)
- 工具:使用
yum(CentOS 7) 或dnf(CentOS 8/Stream)。 - 安装步骤:同样需要添加官方 YUM/DNF 源(如 Oracle 提供的 repo 文件),然后使用
yum install。 - 特点:RPM 包管理机制严格,有时需要手动处理某些复杂的依赖链。
# 示例流程 (以 CentOS 7 为例) sudo yum install mysql-community-server
- 工具:使用
2. 配置文件位置与命名
虽然核心逻辑相同,但文件的存放路径略有差异,这会影响你修改配置时的查找效率。
| 特性 | Ubuntu | CentOS |
|---|---|---|
| 主配置文件 | /etc/mysql/my.cnf |
/etc/my.cnf |
| 包含目录 | /etc/mysql/conf.d/ |
/etc/my.cnf.d/ |
| 数据目录 | /var/lib/mysql/ |
/var/lib/mysql/ (一致) |
| 日志目录 | /var/log/mysql/ |
/var/log/mysqld.log (单文件) |
注意:在 Ubuntu 中,
my.cnf可能会分拆成多个小文件放在conf.d下;而在 CentOS 中,通常直接编辑/etc/my.cnf或在my.cnf.d下创建扩展文件。
3. 服务管理命令
虽然现代 Linux 都使用 systemd,但服务的名称不同。
- Ubuntu: 服务名为
mysql。sudo systemctl start mysql sudo systemctl status mysql - CentOS: 服务名为
mysqld(带 ‘d’ 后缀,代表 daemon)。sudo systemctl start mysqld sudo systemctl status mysqld
4. 初始密码与安全策略
两者在安装后都会要求设置 root 密码,但触发机制略有不同:
- Ubuntu: 安装过程中通常会直接提示输入两次 root 密码,或者通过
mysql_secure_installation脚本引导完成。 - CentOS: 首次安装后,root 用户通常没有密码,而是生成一个临时随机密码存储在日志文件中。
- 查找临时密码:
# CentOS 查看日志中的临时密码 grep 'temporary password' /var/log/mysqld.log - 登录后必须立即修改密码才能进行后续操作。
- 查找临时密码:
5. 防火墙与安全组
- Ubuntu: 默认可能未开启
ufw,或者需要手动运行sudo ufw allow 3306/tcp。 - CentOS: 默认可能开启了
firewalld,需要使用sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload来开放端口。
6. 云服务器环境下的特殊考量
无论选择哪种系统,在云环境中还需注意以下通用点:
- 安全组规则:必须在云厂商的控制台(如阿里云、AWS、腾讯云)的安全组中放行 TCP 3306 端口,否则本地无法连接。
- SELinux:CentOS 默认开启 SELinux,如果自定义了数据目录或端口,可能需要调整 SELinux 策略(
setsebool或restorecon),而 Ubuntu 的 AppArmor 相对宽松或配置更简单。 - 自动化部署:如果使用 Ansible 或 Terraform 等工具,针对 Ubuntu 的 Playbook 和针对 CentOS 的 Playbook 需要区分
package: name=mysql-server还是package: name=mysql-community-server。
总结建议
| 维度 | 推荐场景 |
|---|---|
| Ubuntu | 适合追求社区支持广泛、文档丰富、依赖自动解决能力强的场景。目前许多云厂商的镜像更新频率较高,新特性支持更好。 |
| CentOS | 适合企业级生产环境,尤其是需要长期稳定支持(LTS)、对 RHEL 生态有依赖的团队。注:CentOS 7 已停止维护,建议迁移至 Rocky Linux 或 AlmaLinux,或继续使用 CentOS Stream。 |
核心结论:MySQL 内核行为无区别,区别仅在于“怎么装”、“怎么管”和“在哪改”。如果你熟悉其中一种系统的运维体系,切换到另一种通常只需记住上述几个关键命令和路径的差异即可。
CLOUD技术笔记