在阿里云 2核2G 的ECS实例上部署 MySQL 5.7 是完全可行的,尤其适合新手学习和轻量级应用。以下是详细的部署步骤,确保稳定性和安全性。
✅ 前提条件
- 已购买阿里云 ECS 实例(系统建议 CentOS 7.x 或 Ubuntu 20.04 LTS)
- 已配置安全组规则:开放 3306 端口(或仅限内网访问更安全)
- 使用 root 或具备 sudo 权限的用户登录
🛠️ 部署步骤(以 CentOS 7 为例)
第一步:更新系统
sudo yum update -y
第二步:安装 MySQL 5.7 官方 Yum 源
MySQL 5.7 不再默认包含在 CentOS 7 的基础源中,需手动添加官方源:
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
⚠️ 注意:此版本号可能变化,可前往 MySQL 官网 获取最新链接。
第三步:安装 MySQL 5.7 服务
sudo yum install -y mysql-community-server
第四步:启动 MySQL 并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
第五步:获取临时 root 密码
MySQL 5.7 初始化时会生成一个临时密码:
sudo grep 'temporary password' /var/log/mysqld.log
输出类似:
A temporary password is generated for root@localhost: abc123!XYZ
记下这个密码(如 abc123!XYZ),下一步要用。
第六步:安全初始化(推荐)
运行安全脚本,设置 root 密码、删除匿名用户等:
sudo mysql_secure_installation
按提示操作:
- 输入刚才的临时密码
- 设置新的 root 密码(需复杂:大小写+数字+符号)
- 是否删除匿名用户? →
Y - 是否禁止 root 远程登录? →
Y(安全起见) - 是否删除 test 数据库? →
Y - 是否刷新权限? →
Y
第七步:(可选)允许远程连接
⚠️ 若仅本地应用(如搭配 PHP/Python),无需开启远程访问。
1. 登录 MySQL
mysql -u root -p
2. 授权远程访问(例如允许所有 IP,生产环境应限制 IP)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的强密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
🔐 建议创建专用用户,而非用 root 远程连接:
CREATE USER 'myuser'@'%' IDENTIFIED BY 'StrongPass123!'; GRANT ALL ON mydb.* TO 'myuser'@'%'; FLUSH PRIVILEGES;
3. 修改 MySQL 配置文件绑定地址
编辑 /etc/my.cnf 或 /etc/my.cnf.d/mysql-server.cnf:
[mysqld]
bind-address = 0.0.0.0
如果没有该行,添加即可。若为
127.0.0.1则只能本地访问。
4. 重启 MySQL
sudo systemctl restart mysqld
第八步:配置防火墙(如果启用 firewalld)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
💡 更安全的做法:仅允许特定 IP 访问,或通过阿里云安全组控制。
第九步:优化 MySQL 配置(针对 2核2G 小内存)
编辑配置文件:
sudo vi /etc/my.cnf
添加或修改以下内容:
[mysqld]
# 基础设置
port = 3306
socket = /var/lib/mysql/mysql.sock
datadir = /var/lib/mysql
# 内存优化(关键!2G 内存不要设太高)
key_buffer_size = 16M
max_allowed_packet = 16M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
join_buffer_size = 256K
tmp_table_size = 32M
max_heap_table_size = 32M
# 连接相关
max_connections = 100
max_connect_errors = 100
open_files_limit = 65535
# 日志
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
# 跳过域名解析(提升性能)
skip-name-resolve
# 只监听本地或指定IP(安全)
bind-address = 0.0.0.0 # 或 127.0.0.1(仅本地)
# InnoDB 优化
innodb_buffer_pool_size = 512M # 总内存的 25% 左右,2G 可设 512M
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2 # 提升写入性能(非级应用可接受)
保存后重启 MySQL:
sudo systemctl restart mysqld
第十步:验证安装
mysql -u root -p -e "SELECT VERSION();"
输出应显示:
+-----------+
| VERSION() |
+-----------+
| 5.7.44 |
+-----------+
✅ 后续建议
| 项目 | 建议 |
|---|---|
| 备份 | 使用 mysqldump 定期备份 |
| 监控 | 安装 htop、mytop 观察资源 |
| 安全 | 关闭远程 root 登录,使用 SSH 隧道连接 |
| 升级 | 考虑未来迁移到 MySQL 8.0(功能更强) |
❌ 常见问题排查
| 问题 | 解决方法 |
|---|---|
| 启动失败 | 查看日志 tail -f /var/log/mysqld.log |
| 无法远程连接 | 检查安全组、bind-address、防火墙、用户权限 |
| 内存不足 | 降低 innodb_buffer_pool_size |
| 密码错误 | 重置密码(需跳过权限验证) |
📌 总结
在阿里云 2核2G 环境下成功部署 MySQL 5.7 的关键点:
- 正确添加官方 Yum 源
- 使用
mysql_secure_installation加固 - 合理配置内存参数避免 OOM
- 安全组与防火墙协同开放端口
- 创建专用数据库用户,避免 root 远程登录
如果你使用的是 Ubuntu 系统,步骤类似,只是包管理器为 apt,需要添加 APT 源或下载 .deb 包安装。
需要我提供 Ubuntu 版本的部署教程 吗?欢迎继续提问!
CLOUD技术笔记