在阿里云 ECS 上部署 CentOS 系统的 MySQL 服务,通常有两种主流方式:
- 使用云数据库 RDS(推荐):托管式服务,无需运维,高可用、自动备份。
- 自建 MySQL(本文重点):在 ECS 上手动安装配置,适合学习、测试或需要完全控制权限的场景。
以下是在 CentOS 7/8 上通过 YUM 源安装 MySQL 5.7/8.0 的详细步骤(以 MySQL 8.0 为例,CentOS 7 可替换为 mysql57-community):
✅ 一、前置准备
1. 登录 ECS 实例
ssh root@<your-ecs-ip>
2. 更新系统包
sudo yum update -y
3. 关闭防火墙和 SELinux(可选,生产环境建议配置规则而非关闭)
# 临时关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 临时禁用 SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
⚠️ 生产环境建议开放端口
3306而非关闭防火墙:sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
✅ 二、安装 MySQL 8.0
方法一:使用官方 YUM 仓库(推荐)
1. 添加 MySQL YUM 仓库
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
注意:如果是 CentOS 8,请将
el7改为el8。
2. 检查可用的 MySQL 版本
sudo yum repolist enabled | grep mysql
确保启用了 mysql80-community,如果默认启用的是其他版本(如 mysql57),可以禁用它:
sudo yum-config-manager --disable mysql80-community # 如果误启了8.0想换5.7
sudo yum-config-manager --enable mysql57-community
3. 安装 MySQL Server
sudo yum install -y mysql-community-server
✅ 三、启动并配置 MySQL
1. 启动 MySQL 服务
sudo systemctl start mysqld
sudo systemctl enable mysqld # 设置开机自启
2. 查看初始密码
MySQL 8.0 首次安装后会生成一个临时密码,记录在日志中:
sudo grep 'temporary password' /var/log/mysqld.log
输出示例:
[Note] A temporary password is generated for root@localhost: abcdefg12345!
记下这个临时密码。
3. 修改 root 密码并安全加固
sudo mysql_secure_installation
交互式提示如下:
- 输入刚才的临时密码
- 是否切换 VALIDATE PASSWORD COMPONENT?→ 按
y(推荐开启) - 选择密码强度等级 → 按
2(STRONG) - 设置新 root 密码 → 输入强密码(大小写+数字+特殊字符)
- 删除匿名用户?→
y - 禁止 root 远程登录?→
n(如需远程访问则选 n,但需后续单独授权) - 删除 test 数据库?→
y - 重新加载权限表?→
y
✅ 四、允许远程访问(可选)
1. 编辑 MySQL 配置文件
sudo vi /etc/my.cnf
在 [mysqld] 段落下添加或确认:
bind-address = 0.0.0.0
2. 重启 MySQL
sudo systemctl restart mysqld
3. 创建远程用户并授权
sudo mysql -u root -p
进入 MySQL 后执行:
-- 创建新用户(推荐不要直接用 root 远程登录)
CREATE USER 'myuser'@'%' IDENTIFIED BY 'MyStrongPassword123!';
-- 授予所有权限(或按需限制)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
🔒 更安全做法:只允许特定 IP 访问,例如:
CREATE USER 'myuser'@'192.168.1.100' IDENTIFIED BY 'MyStrongPassword123!'; GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'192.168.1.100';
4. 确保阿里云安全组开放 3306 端口
- 登录 阿里云控制台
- 进入 ECS → 实例 → 安全组 → 配置规则
- 添加入方向规则:
- 协议:TCP
- 端口范围:3306/3306
- 授权对象:
0.0.0.0/0(或指定 IP)
✅ 五、验证安装
1. 本地连接测试
mysql -u root -p
2. 远程连接测试(从其他机器)
mysql -h <your-ecs-ip> -P 3306 -u myuser -p
✅ 六、常用管理命令
| 操作 | 命令 |
|---|---|
| 启动 MySQL | sudo systemctl start mysqld |
| 停止 MySQL | sudo systemctl stop mysqld |
| 重启 MySQL | sudo systemctl restart mysqld |
| 查看状态 | sudo systemctl status mysqld |
| 查看日志 | sudo tail -f /var/log/mysqld.log |
| 导入数据库 | mysql -u root -p dbname < backup.sql |
| 导出数据库 | mysqldump -u root -p dbname > backup.sql |
✅ 七、优化建议(生产环境)
-
调整内存参数(根据 ECS 配置)
[mysqld] innodb_buffer_pool_size = 1G # 通常为物理内存的 50%-70% max_connections = 500 wait_timeout = 600 interactive_timeout = 600 -
定期备份
- 使用
cron + mysqldump脚本 - 或使用阿里云 DTS / 快照备份
- 使用
-
监控性能
- 使用 Prometheus + Grafana
- 或阿里云云监控
-
启用慢查询日志
slow_query_log = 1 slow_query_log_file = /var/log/mysql-slow.log long_query_time = 2
❗ 常见问题排查
| 问题 | 解决方案 |
|---|---|
| 无法连接远程 MySQL | 检查安全组、bind-address、用户权限 |
| 密码错误 | 重置 root 密码:sudo systemctl stop mysqld → mysqld_safe --skip-grant-tables & → 修改密码 → 重启 |
| 磁盘空间不足 | df -h 检查,清理日志或扩容云盘 |
| 服务启动失败 | journalctl -xe 或查看 /var/log/mysqld.log |
🎯 总结
| 步骤 | 内容 |
|---|---|
| 1 | 更新系统,关闭防火墙/SELinux |
| 2 | 添加 MySQL YUM 仓库 |
| 3 | 安装 MySQL Server |
| 4 | 获取临时密码,运行 mysql_secure_installation |
| 5 | 配置远程访问(bind-address + 用户授权) |
| 6 | 开放阿里云安全组 3306 端口 |
| 7 | 测试连接,优化配置 |
如有更高可用性需求,强烈建议使用 阿里云 RDS,免运维、自动备份、高可用架构更完善。
云服务器