如何在阿里云2核4G的Linux服务器上部署MySQL数据库?

在阿里云 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;但避免频繁交换影响性能
监控 安装 htopiotop 监控资源;或使用阿里云云监控
备份 定期 mysqldump + 上传 OSS;或使用 Percona XtraBackup
远程访问 仅对可信 IP 开放 3306;优先用 SSH 隧道(ssh -L 3306:localhost:3306 user@server
替代方案 若业务轻量,可考虑 阿里云 RDS MySQL 免费版(免运维)

需要我提供:

  • 自动化部署脚本(Ansible/Bash)?
  • 针对 WordPress/Java 应用的配置模板?
  • 阿里云 RDS vs 自建对比分析?

欢迎告诉我你的具体场景,我可进一步定制方案!

云服务器