在腾讯云轻量应用服务器(Lighthouse)上部署 Ubuntu 系统的 MySQL,步骤其实非常标准,但因为轻量服务器通常面向个人开发者或中小企业,资源有限且安全策略相对严格,有几个“坑”需要注意。
下面我以 Ubuntu 20.04/22.04 LTS 为例,梳理一套最稳妥、生产环境可用的安装流程。
1. 系统更新与基础准备
不要直接装,先更新源,确保软件包列表是最新的。这一步能避免很多因为版本过旧导致的依赖冲突。
sudo apt update
sudo apt upgrade -y
注意:
upgrade可能会升级内核或其他核心组件,如果是在生产环境且业务繁忙,建议先在控制台快照备份后再操作。
2. 安装 MySQL Server
Ubuntu 默认仓库里就有 MySQL,直接用 apt 安装即可。目前主流版本是 MySQL 8.0。
sudo apt install mysql-server -y
安装完成后,MySQL 服务通常会自动启动。你可以通过以下命令检查状态:
sudo systemctl status mysql
如果看到 active (running),说明服务已就绪。如果没有启动,手动执行:
sudo systemctl start mysql
sudo systemctl enable mysql
3. 安全加固(关键步骤)
刚装好的 MySQL 安全性很低,必须运行安全脚本。这是很多人忽略但至关重要的一步。
sudo mysql_secure_installation
执行过程中会提示一系列选项,建议按以下逻辑选择:
- Validate Password Component:验证密码强度插件。
- 选
Y启用。 - 级别选择
2(STRONG),要求密码包含大小写、数字、特殊字符,长度至少 8 位。
- 选
- Remove anonymous users:移除匿名用户。
- 选
Y。
- 选
- Disallow root login remotely:禁止 root 远程登录。
- 选
Y。这步非常重要,防止暴力破解。
- 选
- Remove test database:移除测试数据库。
- 选
Y。
- 选
- Reload privilege tables now:重新加载权限表。
- 选
Y。
- 选
4. 配置远程访问(腾讯云特有注意事项)
轻量服务器默认只监听本地(127.0.0.1),外部无法连接。你需要修改配置文件并开放端口。
A. 修改 MySQL 配置文件
Ubuntu 的 MySQL 8.0 默认使用 auth_socket 插件进行本地认证,远程连接需要配置用户权限。
编辑配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address 这一行:
# bind-address = 127.0.0.1
将其注释掉,或者改为 0.0.0.0:
bind-address = 0.0.0.0
保存退出(Ctrl+O, Enter, Ctrl+X)。
B. 创建允许远程访问的用户(推荐做法)
不要直接给 root 开远程权限,而是创建一个专用的远程用户。
进入 MySQL 命令行:
sudo mysql
执行以下 SQL 语句(以创建用户 myuser,密码 mypassword 为例,请替换为你自己的强密码):
-- 创建用户,允许从任何主机连接 (% 表示任意 IP)
CREATE USER 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY 'mypassword';
-- 授予所有数据库的所有权限(根据实际需求调整,生产环境建议最小权限原则)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
技术细节:MySQL 8.0 默认认证插件是
caching_sha2_password,很多老版本的客户端(如 Navicat 旧版、某些语言驱动)不支持。所以这里显式指定了mysql_native_password以保证兼容性。如果你的客户端较新,也可以不用指定,但上述写法最稳妥。
C. 重启 MySQL 服务
sudo systemctl restart mysql
D. 腾讯云控制台防火墙设置
这是最容易忘的一步!Linux 内部放行了,云厂商的防火墙没放行也没用。
- 登录 腾讯云轻量应用服务器控制台。
- 进入你的服务器详情页。
- 找到 “防火墙” 标签页。
- 点击 “添加规则”。
- 设置如下:
- 方向:入方向
- 类型:自定义 TCP
- 端口范围:3306
- 授权对象:
0.0.0.0/0(如果是生产环境,建议限制为你的固定公网 IP,更安全) - 策略:允许
保存后,等待几秒生效。
5. 验证连接
在你的本地电脑上,使用 MySQL 客户端(如 DBeaver、Navicat、或命令行)尝试连接:
- Host: 你的轻量服务器公网 IP
- Port: 3306
- User: myuser
- Password: mypassword
如果能连上,说明一切正常。
常见问题排查
- 连接超时:
- 90% 的情况是腾讯云防火墙没开 3306 端口,或者云服务器内部防火墙(ufw)拦截了。
- 检查 UFW:
sudo ufw status。如果显示 active,需执行sudo ufw allow 3306/tcp。
- Access denied for user ‘root’@’…’:
- 因为你禁用了 root 远程登录,请用之前创建的专用用户登录。
- 时区问题:
- 如果应用报错时区不正确,可以在 MySQL 配置文件中添加
default-time-zone = '+8:00',然后重启服务。
- 如果应用报错时区不正确,可以在 MySQL 配置文件中添加
总结
在腾讯云轻量服务器上装 MySQL,核心就三点:
- 安全脚本要跑完,关掉匿名账户和远程 root。
- 配置文件改
bind-address为0.0.0.0。 - 腾讯云控制台防火墙必须手动开通 3306 端口。
这套流程走下来,基本能保证一个干净、可远程访问的 MySQL 环境。对于轻量服务器这种低配机器,日常开发和小流量项目完全够用。
云技术博客