在阿里云服务器(ECS)上安装和配置 MySQL,需根据您选择的操作系统(推荐 CentOS 7/8、Ubuntu 20.04+/22.04 或 Alibaba Cloud Linux)进行操作。以下以 主流且推荐的 Alibaba Cloud Linux 3(兼容 RHEL/CentOS) 和 Ubuntu 22.04 为例,提供安全、生产就绪的完整步骤(含初始化加固、远程访问配置、防火墙设置等):
✅ 前提准备
- 已购买并启动阿里云 ECS 实例(建议 ≥2GB 内存,MySQL 8.0+ 推荐 4GB+)
- 已通过 SSH 登录服务器(如
ssh root@<公网IP>) - 确保实例安全组已放行 MySQL 端口(默认 3306):
- 登录 阿里云控制台 → ECS → 安全组 → 配置规则
- 添加入方向规则:
端口范围 3306/3306,授权对象建议 限制为可信 IP(如您的办公 IP),切勿填0.0.0.0/0(开放全网) ❗
🐧 方案一:Alibaba Cloud Linux 3 / CentOS Stream 9 / RHEL 9(推荐使用官方仓库或 MySQL YUM 源)
步骤 1:更新系统 & 安装依赖
sudo dnf update -y
sudo dnf install -y wget curl gnupg2 lsof
步骤 2:添加 MySQL 官方 YUM 仓库(安装 MySQL 8.0+)
# 下载并安装 MySQL YUM 仓库配置包(以 8.0 为例)
wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el9-1.noarch.rpm
# ✅ 可选:启用 MySQL 8.0(默认已启用),禁用其他版本(如 5.7)
sudo dnf config-manager --disable mysql57-community
sudo dnf config-manager --enable mysql80-community
步骤 3:安装 MySQL Server
sudo dnf install -y mysql-community-server
步骤 4:启动并设置开机自启
sudo systemctl enable mysqld
sudo systemctl start mysqld
步骤 5:获取临时 root 密码 & 初始化安全配置
# 查看临时密码(首次启动自动生成)
sudo grep 'temporary password' /var/log/mysqld.log
# 运行安全向导(强烈推荐!)
sudo mysql_secure_installation
按提示操作:
- 输入临时密码 → 设置新 root 密码(务必强密码,如
MySQl@2024!A1b) - 后续全部选
Y(移除匿名用户、禁止 root 远程登录、删除 test 库、重载权限表)
💡 注意:
mysql_secure_installation默认会 禁用 root 远程登录,后续如需远程管理,需单独授权。
步骤 6:配置允许远程访问(可选,仅限必要场景)
sudo mysql -u root -p # 输入刚设的 root 密码
在 MySQL 内执行:
-- 1. 创建专用管理用户(比 root 更安全!)
CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
-- 2. 刷新权限
FLUSH PRIVILEGES;
-- ✅ (可选)若必须用 root 远程(不推荐):
-- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongRootPwd';
-- CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongRootPwd';
-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- FLUSH PRIVILEGES;
步骤 7:修改绑定地址(监听所有 IP)
sudo vi /etc/my.cnf.d/mysql-server.cnf
在 [mysqld] 段下添加或修改:
bind-address = 0.0.0.0 # 允许所有 IP 连接(配合安全组/IP 白名单使用)
# 或更安全:bind-address = 172.18.0.10 # 仅内网 IP(推荐用于应用同 VPC 部署)
max_connections = 200
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
步骤 8:重启 MySQL 并验证
sudo systemctl restart mysqld
sudo systemctl status mysqld # 确认 active (running)
# 本地测试连接
mysql -u admin -p -h 127.0.0.1
✅ 验证远程连接(从本地电脑):
mysql -h <你的ECS公网IP> -P 3306 -u admin -p
🐳 方案二:Ubuntu 22.04(使用 APT 安装 MySQL 8.0)
# 更新 & 安装
sudo apt update
sudo apt install -y mysql-server
# 启动并启用
sudo systemctl enable mysql
sudo systemctl start mysql
# 运行安全配置(同上)
sudo mysql_secure_installation
# 修改配置(Ubuntu 配置文件通常在 /etc/mysql/mysql.conf.d/mysqld.cnf)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到 bind-address = 127.0.0.1 → 改为 bind-address = 0.0.0.0
# 重启
sudo systemctl restart mysql
⚠️ Ubuntu 默认使用
auth_socket插件认证 root,如需密码登录,进入 MySQL 执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPwd'; FLUSH PRIVILEGES;
🔐 关键安全加固建议(必做!)
| 项目 | 操作 |
|---|---|
| ✅ 阿里云安全组 | 仅放行可信来源 IP 的 3306 端口(非 0.0.0.0/0) |
| ✅ MySQL 用户权限 | 禁用 root 远程;为每个应用创建最小权限账号(如 app_user@'172.18.%.%') |
| ✅ 密码策略 | SET GLOBAL validate_password.policy = STRONG;(MySQL 8.0+) |
| ✅ 日志审计 | 开启通用日志或错误日志(谨慎开启通用日志,影响性能) |
| ✅ 自动备份 | 使用 mysqldump + cron 或阿里云 RDS 备份服务(更推荐上云 RDS) |
🚀 进阶建议(生产环境强烈推荐)
- ✅ 优先使用阿里云 RDS MySQL:免运维、自动备份、高可用、SQL 审计、一键升级,成本与 ECS 相当甚至更低。
- ✅ 应用连接使用内网地址:ECS 与 RDS 同地域同 VPC 时,用内网 IP(更安全、低延迟、不走公网流量)。
- ✅ 配置监控告警:通过阿里云云监控设置 CPU、连接数、慢查询等阈值告警。
- ✅ 定期升级:
sudo dnf update mysql-community-server(保持小版本更新修复漏洞)
需要我为您生成:
- ✅ 自动化安装脚本(Shell)
- ✅
mysqldump定时备份脚本(带保留7天) - ✅ Docker 方式部署 MySQL(隔离性更好)
- ✅ 迁移本地数据库到阿里云 MySQL 的详细步骤?
欢迎随时告诉我您的具体环境(OS 版本、MySQL 版本需求、是否已有数据),我会为您定制方案 👇
CLOUD技术笔记