在阿里云 2 核 4G 的 Linux 服务器上部署 MySQL,推荐采用官方 YUM/RPM 包安装或Docker 容器化部署两种方式。以下是详细步骤(以 CentOS/Alibaba Cloud Linux 为例):
✅ 方案一:使用官方 YUM 源安装(推荐生产环境)
1. 系统准备
# 更新系统并安装必要工具
sudo yum update -y
sudo yum install -y wget curl vim net-tools
# 检查内存(确保 ≥2GB,建议关闭 Swap 或限制其使用)
free -h
💡 注意:2C4G 内存较紧张,MySQL 默认配置可能占用过高。后续需优化
my.cnf。
2. 添加 MySQL 官方 YUM 仓库
方式 A:使用 MySQL 8.0 官方 repo(推荐)
# 下载 MySQL 8.0 RPM 包
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
# 安装 repo(根据系统版本选择 el7/el8,阿里云通常用 el7)
sudo rpm -Uvh mysql80-community-release-el7-11.noarch.rpm
# 验证已启用的源
yum repolist | grep mysql
⚠️ 若使用 Alibaba Cloud Linux(兼容 RHEL/CentOS),可参考 阿里云官方文档 选择对应镜像源。
方式 B:使用阿里云镜像源(更快)
# 替换为阿里云提供的 MySQL 源(示例)
sudo wget -O /etc/yum.repos.d/mysql.repo
https://mirrors.aliyun.com/repo/mysql-8.0-el7.repo
3. 安装 MySQL Server
# 安装 MySQL Server(不自动启动服务)
sudo yum install -y mysql-community-server
# 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 查看初始 root 密码(首次安装后生成随机密码)
sudo grep 'temporary password' /var/log/mysqld.log
4. 安全初始化(关键!)
sudo mysql_secure_installation
按提示操作:
- ✅ 设置强密码(避免弱口令)
- ✅ 删除匿名用户
- ✅ 禁止 root 远程登录(除非必要)
- ✅ 移除 test 数据库
- ✅ 刷新权限
🔐 对于公网暴露场景,务必禁用 root 远程登录,创建专用应用账号。
5. 优化配置文件(适配 2C4G)
编辑 /etc/my.cnf 或 /etc/my.cnf.d/server.cnf:
[mysqld]
# 基础优化(根据实际负载调整)
innodb_buffer_pool_size = 1G # 占物理内存 ~25%
max_connections = 100 # 默认 151,可适当降低
query_cache_type = 0 # MySQL 8.0 已弃用 query cache
tmp_table_size = 32M
max_heap_table_size = 32M
thread_cache_size = 16
table_open_cache = 400
sort_buffer_size = 256K
read_buffer_size = 256K
# 日志与性能
log_error = /var/log/mysqld.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
重启生效:
sudo systemctl restart mysqld
6. 创建应用用户(非 root)
-- 登录 MySQL
mysql -u root -p
-- 创建专用用户(例如 app_user@localhost)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
EXIT;
🌐 若需远程访问,请确保:
- 阿里云控制台 安全组开放 3306 端口
- 防火墙允许(
firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload)- 用户授权中
%表示任意 IP(生产建议指定具体 IP)
✅ 方案二:Docker 部署(快速轻量,适合测试/开发)
1. 安装 Docker
# 安装 docker-ce(阿里云镜像提速)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
sudo systemctl enable docker && sudo systemctl start docker
2. 拉取并运行 MySQL 容器
docker run -d
--name mysql
-e MYSQL_ROOT_PASSWORD=YourStrongPass123!
-e MYSQL_DATABASE=testdb
-e MYSQL_USER=app_user
-e MYSQL_PASSWORD=AppPass123!
-p 3306:3306
--restart always
-v /data/mysql:/var/lib/mysql
mysql:8.0
3. 优化(可选)
通过 docker exec -it mysql sh 进入容器修改 /etc/mysql/conf.d/custom.cnf 进行参数调优。
🔍 验证安装
# 检查服务状态
systemctl status mysqld
# 测试连接
mysql -u app_user -p -h 127.0.0.1
# 查看版本
mysql -V
📌 重要提醒(2C4G 特供建议)
| 项目 | 建议 |
|---|---|
| Swap | 建议保留 1~2G Swap,防止 OOM;但避免频繁交换影响性能 |
| 监控 | 安装 htop、iotop 监控资源;或使用阿里云云监控 |
| 备份 | 定期 mysqldump + 上传 OSS;或使用 Percona XtraBackup |
| 远程访问 | 仅对可信 IP 开放 3306;优先用 SSH 隧道(ssh -L 3306:localhost:3306 user@server) |
| 替代方案 | 若业务轻量,可考虑 阿里云 RDS MySQL 免费版(免运维) |
需要我提供:
- 自动化部署脚本(Ansible/Bash)?
- 针对 WordPress/Java 应用的配置模板?
- 阿里云 RDS vs 自建对比分析?
欢迎告诉我你的具体场景,我可进一步定制方案!
CLOUD技术笔记