直接上干货。在腾讯云的轻量应用服务器(Lighthouse)或 CVM 上安装 MySQL 8.0,核心难点不在于“装”,而在于配置优化和安全加固。轻量服务器的资源通常有限(比如 2核4G 或更低),如果按默认配置跑 MySQL 8.0,很容易因为内存溢出(OOM)导致服务崩溃。
以下是基于 OpenCloudOS(阿里云的开源操作系统,内核兼容 CentOS/RHEL)的标准操作流程。OpenCloudOS 的包管理工具 dnf 与 yum 基本通用,但建议优先使用 dnf。
第一步:系统环境准备
MySQL 8.0 对依赖库有要求,且需要关闭防火墙干扰测试,以及设置 SELinux 为宽松模式(生产环境建议保持 Enforcing 并配置策略,这里为了演示流畅性先设为 Permissive)。
# 1. 更新系统包
sudo dnf update -y
# 2. 检查 SELinux 状态
sestatus
# 如果显示 Enforcing,执行以下命令临时改为 Permissive
sudo setenforce 0
# 修改配置文件使其永久生效
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 3. 开放端口(如果是腾讯云轻量,建议在控制台安全组也放行 3306)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
第二步:安装 MySQL 8.0
OpenCloudOS 默认仓库可能包含的是较老版本的 MySQL(如 5.7 或 MariaDB)。要安装最新的 8.0,必须添加官方 YUM 源。
# 1. 下载 MySQL 8.0 的 YUM 仓库配置包
# 注意:URL 可能会变,请以官网为准,这里提供通用逻辑
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm -y
# 2. 禁用默认的 MySQL 模块(防止冲突)
sudo dnf module disable mysql -y
# 3. 确认只启用 MySQL 8.0 社区版
sudo dnf config-manager --set-enabled mysql80-community
# 4. 安装 MySQL Server
sudo dnf install mysql-community-server -y
第三步:启动并初始化
# 启动 MySQL 服务
sudo systemctl start mysqld
# 设置开机自启
sudo systemctl enable mysqld
# 查看运行状态
sudo systemctl status mysqld
第四步:获取初始密码并重置
MySQL 8.0 首次启动时,会自动生成一个随机 root 密码,并记录在日志中。
# 查找初始密码
sudo grep 'temporary password' /var/log/mysqld.log
你会看到类似这样的输出:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: abcdefg12345
复制那个密码,然后运行安全脚本:
sudo mysql_secure_installation
交互过程如下:
- Validate Password Component: 询问是否启用密码强度验证插件。建议选
Y,提高安全性。 - Change Root Password: 输入刚才找到的临时密码,然后设置一个新的、符合复杂度要求的强密码(大小写字母+数字+特殊字符)。
- Remove anonymous users: 选
Y,删除匿名用户。 - Disallow root login remotely: 关键点! 如果你希望远程连接数据库,这里选
N。如果只允许本地访问,选Y。注意:腾讯云轻量服务器通常需要通过 SSH 隧道或配置白名单来远程连接,不建议直接开放 root 远程登录。 - Remove test database: 选
Y,删除测试库。 - Reload privilege tables: 选
Y,刷新权限。
第五步:关键优化(针对轻量服务器)
这是最容易忽略的一步。MySQL 8.0 默认配置偏向大型服务器,轻量服务器内存小,不调整参数极易 OOM。
编辑配置文件:
sudo vi /etc/my.cnf
在 [mysqld] 下添加或修改以下参数(根据实际内存调整,假设是 2G/4G 内存):
[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/run/mysqld/mysqld.pid
# 字符集设置(避免中文乱码)
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 性能优化(重点!)
# 根据服务器总内存的 50%-70% 分配给 innodb_buffer_pool_size
# 例如 2G 内存机器,设置为 512M 或 1G;4G 机器可设置为 1G-2G
innodb_buffer_pool_size = 1G
# 连接数限制(轻量服务器不要设太高,防止被连接耗尽)
max_connections = 100
# 日志相关
slow_query_log = 1
long_query_time = 2
slow_query_log_file = /var/log/mysql-slow.log
# 安全加固
bind-address = 127.0.0.1 # 默认只监听本地,如需远程,改为 0.0.0.0 并在安全组配置
保存后重启服务:
sudo systemctl restart mysqld
第六步:创建普通用户并授权(最佳实践)
严禁直接使用 root 账号进行业务开发连接。 创建一个专用账号,并限制其来源 IP。
-- 登录 MySQL
mysql -u root -p
-- 进入 SQL 界面后执行:
-- 1. 创建用户 (替换 'your_password' 为你的强密码)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'YourStrongPassword123!';
-- 2. 授予权限 (推荐只授予特定数据库的权限,而不是全部 *)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, EXECUTE ON your_database_name.* TO 'app_user'@'%';
-- 3. 刷新权限
FLUSH PRIVILEGES;
-- 4. 退出
EXIT;
注意:
'app_user'@'%'表示允许从任何 IP 连接。出于安全考虑,建议将%替换为你具体的公网 IP,或者使用腾讯云轻量服务器的内网 IP 段。
常见问题排查
-
无法远程连接?
- 检查腾讯云控制台的安全组,是否放行了 3306 端口。
- 检查
/etc/my.cnf中的bind-address,如果是127.0.0.1,则拒绝远程连接。改为0.0.0.0后需重启 MySQL。 - 检查 MySQL 用户权限,确保用户主机部分是
%或对应 IP。
-
内存不足报错?
- 检查
dmesg | grep oom,如果确实 OOM,减小innodb_buffer_pool_size,增加 Swap 分区(轻量服务器建议至少 2G Swap)。
- 检查
-
Navicat/DBeaver 连接报错 2059?
- MySQL 8.0 默认认证插件是
caching_sha2_password,旧版客户端不支持。 - 解决方法:修改用户认证方式
ALTER USER 'app_user'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword123!'; FLUSH PRIVILEGES;
- MySQL 8.0 默认认证插件是
总结
在 OpenCloudOS 上安装 MySQL 8.0 的核心流程是:添加官方 YUM 源 -> 安装 -> 安全初始化 -> 调整内存参数 -> 创建非 root 用户。
切记,轻量服务器的资源宝贵,不要盲目追求高性能配置,而是应该通过合理的参数调优和安全策略,让系统在有限资源下稳定运行。生产环境务必定期备份数据,并监控磁盘空间和 CPU 使用率。
云知道CLOUD