在阿里云轻量应用服务器(2G 内存)上安装 MySQL 5.7,最推荐的方式是使用阿里云控制台的一键部署功能。这种方式不仅自动化程度高,还能自动优化配置以适配小内存环境。如果必须手动安装,也需要特别注意内存调优,否则极易因 OOM(内存溢出)导致服务崩溃。
以下是两种具体的实施方案:
方案一:使用阿里云控制台一键部署(强烈推荐)
这是最简单且最稳定的方式,阿里云会自动为你创建数据库实例并配置好基础参数。
- 登录控制台:进入阿里云轻量应用服务器管理页面。
- 选择应用镜像:
- 点击你的服务器实例,进入详情页。
- 找到“应用”或“重装系统/更换镜像”选项(不同界面入口可能略有差异,通常在“更多”->“重装系统”或者直接点击“应用”标签页)。
- 在“应用市场”中搜索 "MySQL" 或 “宝塔面板”(宝塔内也包含一键安装 MySQL)。
- 如果你需要纯 MySQL 环境,选择官方提供的 MySQL 5.7 镜像进行重装(注意:这会清空现有数据,请先备份)。
- 等待部署:系统会自动安装操作系统、MySQL 5.7 以及相关的管理工具(如 phpMyAdmin),部署完成后,控制台会提供默认的 root 密码和端口信息。
方案二:手动安装(适合已有系统,需精细控制)
如果你的服务器已经运行且不能重装,可以通过命令行手动安装。由于只有 2G 内存,必须在安装前或安装后调整 my.cnf 配置文件,否则 MySQL 启动时会直接报错退出。
1. 更新软件源并安装
首先确保系统是最新的,然后添加 MySQL YUM 仓库并安装。
# 1. 下载并安装 MySQL YUM 配置文件 (以 CentOS 7/8 为例)
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
# 2. 更新包列表并安装 MySQL Server
sudo yum update -y
sudo yum install -y mysql-community-server
# 3. 启动服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
2. 获取临时密码
安装完成后,root 用户会有一个随机初始密码,位于日志文件中:
sudo grep 'temporary password' /var/log/mysqld.log
记下输出的随机密码。
3. 关键步骤:优化内存配置
2G 内存对于 MySQL 默认配置来说非常紧张。默认配置可能会尝试分配过多内存给 Buffer Pool,导致系统卡死。我们需要修改配置文件。
编辑配置文件:
sudo vi /etc/my.cnf
在 [mysqld] 部分下,追加或修改以下参数(针对 2G 内存的优化建议):
[mysqld]
# 限制连接数,防止并发过高耗尽内存
max_connections = 100
# 设置缓冲池大小,2G 内存建议设置为总内存的 25%-40% (约 512M - 800M)
# 如果其他服务(如 Nginx/PHP)占用较多,请设低一点,例如 512M
innodb_buffer_pool_size = 512M
# 设置最大排序缓冲区,避免大查询消耗过多内存
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
# 开启慢查询日志以便调试(可选)
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 2
保存退出后,重启 MySQL 使配置生效:
sudo systemctl restart mysqld
4. 安全初始化
首次登录后,建议立即修改 root 密码并移除匿名用户等不安全项。
# 使用临时密码登录
mysql -u root -p
# 输入刚才查到的临时密码
# 进入 MySQL 后执行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新强密码';
FLUSH PRIVILEGES;
EXIT;
常见问题与注意事项
- OOM Killer 问题:如果在安装过程中发现 MySQL 进程频繁被杀死(查看
dmesg | grep -i kill),说明内存依然不足。请进一步降低innodb_buffer_pool_size到256M或300M,或者关闭不必要的后台服务。 - 防火墙设置:如果需要在外部连接数据库,记得在阿里云控制台的“安全组”规则中,放行 3306 端口。
- 远程访问:默认情况下 MySQL 只允许本地连接。如果需要远程连接,除了开放安全组,还需要在 MySQL 内部授权:
-- 登录 MySQL 后执行 CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%'; FLUSH PRIVILEGES;(注:生产环境建议限制
'your_user'@'具体IP'而不是%)
总结建议:对于 2G 内存的轻量服务器,方案一(重装带 MySQL 的镜像) 是风险最低的选择,因为阿里云官方镜像已经针对小内存做过预优化。如果必须手动安装,请务必严格执行第 3 步的内存参数调优。
CDNK博客