奋斗
努力

阿里云ECS CentOS系统怎么部署MySQL服务?

云计算

在阿里云 ECS 上部署 CentOS 系统的 MySQL 服务,通常有两种主流方式:

  1. 使用云数据库 RDS(推荐):托管式服务,无需运维,高可用、自动备份。
  2. 自建 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

✅ 七、优化建议(生产环境)

  1. 调整内存参数(根据 ECS 配置)

    [mysqld]
    innodb_buffer_pool_size = 1G        # 通常为物理内存的 50%-70%
    max_connections = 500
    wait_timeout = 600
    interactive_timeout = 600
  2. 定期备份

    • 使用 cron + mysqldump 脚本
    • 或使用阿里云 DTS / 快照备份
  3. 监控性能

    • 使用 Prometheus + Grafana
    • 或阿里云云监控
  4. 启用慢查询日志

    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,免运维、自动备份、高可用架构更完善。

未经允许不得转载:云服务器 » 阿里云ECS CentOS系统怎么部署MySQL服务?