如何在搬瓦工 VPS 上安装 MySQL 8.0 并优化配置文件

文章导读
在搬瓦工 VPS 上安装 MySQL 8.0 推荐使用系统包管理器或官方 APT/YUM 源,配置文件优化需根据 VPS 内存大小调整 innodb_buffer_pool_size。主要风险是低内存 VPS 容易因内存不足导致 MySQL 进程被系统杀死。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在搬瓦工 VPS 上安装 MySQL 8.0 推荐使用系统包管理器或官方 APT/YUM 源,配置文件优化需根据 VPS 内存大小调整 innodb_buffer_pool_size。主要风险是低内存 VPS 容易因内存不足导致 MySQL 进程被系统杀死。

先说结论:搬瓦工 KVM 架构 VPS 可直接安装 MySQL 8.0,但需根据内存容量限制配置参数以防 OOM。

  • 适合:Ubuntu 20.04+/Debian 10+ 或 CentOS 8+/AlmaLinux 8+ 系统
  • 先准备:确认 VPS 可用内存至少 1GB,或预先配置 Swap 分区
  • 验收:通过 systemctl 状态检查及客户端登录验证

命令速用版

以下命令适用于主流 Linux 发行版,请根据实际操作系统选择对应的安装指令。

# Ubuntu/Debian 系统安装命令
sudo apt update
sudo apt install mysql-server -y

# CentOS/AlmaLinux 系统安装命令(需先安装 MySQL 官方源)
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
sudo dnf install -y mysql80-community-release-el8-1.noarch.rpm
sudo dnf install -y mysql-community-server

为什么会这样

MySQL 8.0 默认配置针对通用服务器设计,未考虑小内存 VPS 限制。

搬瓦工部分入门套餐内存较小,而 MySQL 8.0 的 InnoDB 引擎默认会尝试占用较多内存作为缓冲池。如果不手动限制 `innodb_buffer_pool_size`,在并发连接或复杂查询时,系统可用内存耗尽会触发 Linux 内核的 OOM Killer 机制,直接终止 MySQL 进程。此外,MySQL 8.0 默认身份验证插件为 `caching_sha2_password`,旧版客户端可能无法连接,需确认兼容性。

分步处理

按顺序执行安装、安全初始化、配置优化和启动服务,每步完成后需检查状态。

步骤 1:安装数据库服务

使用上述“命令速用版”中的指令安装。安装过程中若提示设置 root 密码,请记录强密码;若未提示,后续需通过安全脚本设置。

步骤 2:运行安全初始化

执行以下命令移除匿名用户、禁止 root 远程登录并删除测试数据库。

sudo mysql_secure_installation

按提示选择 VALIDATE PASSWORD 插件(可选),设置 root 密码,其余选项建议选 Y 确认。

步骤 3:优化配置文件

编辑配置文件,Ubuntu 通常位于 `/etc/mysql/mysql.conf.d/mysqld.cnf`,CentOS 通常位于 `/etc/my.cnf`。在 `[mysqld]` 段落下添加或修改以下参数:

[mysqld]
# 根据 VPS 内存调整,1GB 内存建议设为 256M 或 512M
innodb_buffer_pool_size = 256M
# 限制最大连接数,防止高并发耗尽内存
max_connections = 150
# 禁用符号链接以防安全风险
symbolic-links = 0

步骤 4:重启服务

配置修改后必须重启服务才能生效。

sudo systemctl restart mysql
# 或 CentOS 系统
sudo systemctl restart mysqld

怎么验证是否生效

通过系统服务状态、版本检查和登录测试确认安装与配置结果。

检查服务状态

sudo systemctl status mysql
# 或
sudo systemctl status mysqld

输出中包含 active (running) 表示服务正常运行。

检查版本

mysql `--version`

输出应包含 Ver 8.0 字样。

登录测试

sudo mysql -u root -p

输入密码后进入 mysql> 提示符,执行 SELECT version(); 确认版本号。

常见坑

低内存 VPS 未配置 Swap 可能导致安装过程中断或启动失败。

若 VPS 内存小于 1GB,建议在安装前创建 Swap 文件。MySQL 8.0 默认认证插件导致旧客户端连接报错,需在用户配置中修改为 mysql_native_password。防火墙未放行 3306 端口会导致远程无法连接,需检查 UFW 或 Firewalld 设置。

常见问题

忘记 MySQL root 密码怎么办?

可通过跳过授权表模式重置密码。

停止服务,使用 `--skip-grant-tables` 参数启动 MySQL,登录后可直接更新 user 表密码,完成后重启服务恢复正常模式。

如何允许远程连接 MySQL?

需修改用户主机绑定并放行防火墙端口。

在 MySQL 内执行 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; 并授权远程 IP,同时在 VPS 防火墙开放 3306 端口。

配置文件路径找不到怎么办?

不同 Linux 发行版默认路径不同。

可使用命令 mysql `--help` | grep my.cnf 查看系统读取配置文件的优先级顺序,通常位于 /etc/ 目录下。

参考来源

  • MySQL Official Documentation, Installing MySQL on Linux, https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html
  • Ubuntu Server Guide, MySQL, https://ubuntu.com/server/docs/databases-mysql
  • CentOS Documentation, MySQL, https://docs.centos.org/en-US/centos-stream/docs/database-stream/Installing-and-Using-Mysql/