在阿里云2核4G的Linux服务器上部署MySQL数据库是一个常见的任务。以下是详细的步骤,适用于主流的Linux发行版(如 CentOS、Ubuntu)。
✅ 一、准备工作
-
登录服务器
使用 SSH 登录你的阿里云ECS实例:ssh root@your_server_ip -
更新系统包(推荐)
- 对于 Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y - 对于 CentOS/RHEL:
sudo yum update -y # 或者使用 dnf(CentOS 8+) sudo dnf update -y
- 对于 Ubuntu/Debian:
✅ 二、安装 MySQL
方式一:安装 MySQL 官方版本(推荐)
1. 添加 MySQL 官方仓库
-
Ubuntu:
# 下载并安装 MySQL APT 配置包 wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb # 在弹出界面选择 MySQL 8.0(默认),然后确认 sudo apt update -
CentOS 7/8:
# 添加 MySQL Yum 仓库 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm # 启用 MySQL 8.0 仓库 sudo yum-config-manager --enable mysql80-community
2. 安装 MySQL 服务
# Ubuntu
sudo apt install mysql-server -y
# CentOS
sudo yum install mysql-server -y
⚠️ 注意:对于生产环境建议选择稳定版本(如 MySQL 8.0 或 5.7),避免使用开发版。
✅ 三、启动并设置开机自启
# 启动 MySQL 服务
sudo systemctl start mysqld
# 或某些系统为 mysql
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysqld
✅ 四、初始化安全配置
运行安全脚本(首次安装后必须执行):
sudo mysql_secure_installation
该脚本会引导你完成以下操作:
- 设置 root 用户密码
- 移除匿名用户
- 禁止 root 远程登录(可选)
- 删除测试数据库
- 重新加载权限表
💡 建议设置强密码,并根据需求决定是否允许远程访问。
✅ 五、登录 MySQL 并创建用户(可选)
mysql -u root -p
进入后可以创建新用户并授权(例如用于应用连接):
-- 创建用户(例如用户名 appuser,密码 your_password)
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'your_password';
-- 授予数据库权限(示例:对 mydb 数据库完全控制)
GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
如需远程连接,将
'localhost'改为'%',并确保防火墙和安全组允许。
✅ 六、配置远程访问(可选)
-
修改 MySQL 配置文件
编辑
/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或/etc/my.cnf//etc/my.cnf.d/server.cnf(CentOS):找到
bind-address行,改为:bind-address = 0.0.0.0⚠️ 开放远程访问有安全风险,请确保使用强密码并限制 IP。
-
重启 MySQL
sudo systemctl restart mysqld -
阿里云安全组规则
- 登录 阿里云控制台
- 找到你的 ECS 实例 → 安全组 → 配置规则
- 添加入方向规则:
- 协议类型:TCP
- 端口范围:3306
- 授权对象:
0.0.0.0/0(仅测试)或指定 IP
✅ 七、优化配置(针对 2核4G 服务器)
编辑 MySQL 配置文件(如 /etc/mysql/mysql.conf.d/mysqld.cnf):
[mysqld]
# 基础设置
port = 3306
bind-address = 0.0.0.0
skip-name-resolve
# 内存相关(适合 4G 内存)
key_buffer_size = 128M
max_allowed_packet = 64M
table_open_cache = 256
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
# InnoDB 设置
innodb_buffer_pool_size = 1G # 推荐为物理内存的 50%~70%
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
# 连接数
max_connections = 150
保存后重启 MySQL:
sudo systemctl restart mysqld
✅ 八、验证安装
# 查看服务状态
sudo systemctl status mysqld
# 查看监听端口
sudo netstat -tulnp | grep 3306
# 检查 MySQL 版本
mysql --version
✅ 九、常用命令汇总
| 功能 | 命令 |
|---|---|
| 启动 MySQL | sudo systemctl start mysqld |
| 停止 MySQL | sudo systemctl stop mysqld |
| 重启 MySQL | sudo systemctl restart mysqld |
| 查看状态 | sudo systemctl status mysqld |
| 登录 MySQL | mysql -u root -p |
✅ 十、注意事项
- 定期备份数据:使用
mysqldump或 XtraBackup。 - 监控资源使用:2核4G 适合中小型应用,避免高并发或大数据量场景。
- 开启日志审计:必要时记录慢查询日志。
- 保持更新:定期升级 MySQL 和系统补丁。
如有需要,我可以提供一键部署脚本或 Docker 部署方式。欢迎继续提问!
云小栈