在阿里云轻量应用服务器(Simple Application Server, SAS)上部署 Ubuntu 系统的 MySQL,流程其实非常标准化,但有几个“坑”是新手容易踩的。作为过来人,我直接给你一套最稳妥、最实用的操作指南,涵盖从安装到安全配置的全过程。
核心思路
- 系统更新:确保基础环境干净。
- 安装 MySQL:推荐使用官方源或 Ubuntu 默认源(8.0+ 版本)。
- 安全加固:这是最关键的一步,尤其是对于公网开放的轻量服务器。
- 远程连接测试:验证是否真的能连上。
第一步:登录与基础准备
通过 SSH 登录你的 Ubuntu 实例。建议直接使用 root 用户或者拥有 sudo 权限的用户操作。
# 更新软件包列表,防止后续安装出现依赖问题
sudo apt update && sudo apt upgrade -y
注意:轻量服务器的内存通常较小(如 1核1G/2G),如果内存低于 1GB,建议在安装前创建一个 Swap 分区,否则 MySQL 启动可能会因为 OOM(内存溢出)失败。
快速创建 1G Swap 的方法:sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
第二步:安装 MySQL
Ubuntu 的软件源中通常包含较新的 MySQL 版本。我们使用 apt 安装,这样后续升级和管理更方便。
# 安装 mysql-server 及其依赖
sudo apt install mysql-server -y
安装完成后,MySQL 服务通常会自动启动。你可以检查状态:
sudo systemctl status mysql
如果显示 active (running),说明服务已就绪。如果没有,手动启动:
sudo systemctl start mysql
sudo systemctl enable mysql # 设置开机自启
第三步:运行安全脚本(强烈建议)
MySQL 安装后默认配置并不适合生产环境,尤其是密码策略和匿名账户。运行内置的安全脚本来加固:
sudo mysql_secure_installation
执行过程中你会遇到几个选项,建议如下选择:
- VALIDATE PASSWORD COMPONENT(密码强度验证插件):
- 问你是否启用?选
Y。 - 级别选择?选
2(Strong,强制大小写、数字、特殊字符混合)。
- 问你是否启用?选
- Change the root password?:
- 如果你已经设置了强密码,可以选
N,但为了统一,建议重新设置一个高强度密码。
- 如果你已经设置了强密码,可以选
- Remove anonymous users?:
- 选
Y,删除匿名用户。
- 选
- Disallow root login remotely?:
- 重点! 这里选
Y。禁止 root 用户直接通过密码远程登录,这是安全底线。
- 重点! 这里选
- Remove test database and access to it?:
- 选
Y,删除测试库。
- 选
- Reload privilege tables now?:
- 选
Y,刷新权限。
- 选
第四步:配置允许远程访问
默认情况下,MySQL 只监听本地回环地址(127.0.0.1),外部无法连接。你需要修改配置文件。
-
编辑 MySQL 配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf -
找到
bind-address这一行:bind-address = 127.0.0.1将其改为:
bind-address = 0.0.0.0(注:
0.0.0.0表示监听所有网卡 IP) -
保存并退出(Nano 编辑器:按
Ctrl+O回车保存,Ctrl+X退出)。 -
重启 MySQL 使配置生效:
sudo systemctl restart mysql
第五步:创建专用数据库用户(最佳实践)
不要直接用 root 账号连接你的应用程序! 这是严重的安全风险。你应该创建一个具有特定权限的普通用户。
-
进入 MySQL 命令行:
sudo mysql -
执行以下 SQL 命令(替换为你自己的用户名和密码):
-- 创建新用户,允许从任意主机连接(% 代表任意IP,生产环境建议指定具体IP) CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_strong_password'; -- 创建数据库 CREATE DATABASE your_database_name; -- 授权该用户对数据库的完全控制权 GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'%'; -- 刷新权限 FLUSH PRIVILEGES; -- 退出 EXIT;
第六步:配置阿里云防火墙与安全组
这一步很多人会忽略,导致前面都配好了却连不上。
- 登录阿里云控制台,找到你的轻量应用服务器。
- 进入 “防火墙” 或 “安全组” 设置页面。
- 添加入方向规则:
- 协议:TCP
- 端口范围:3306
- 授权对象:建议填写你本地的公网 IP(更安全),或者
0.0.0.0/0(方便调试,但不推荐长期开放)。 - 描述:MySQL Remote Access
第七步:验证连接
在你的本地电脑(Windows/Mac/Linux)上使用数据库管理工具(如 Navicat, DBeaver, MySQL Workbench)或命令行连接。
- Host: 阿里云轻量服务器的公网 IP
- Port: 3306
- User: 你在第五步创建的
your_username - Password: 对应的密码
如果连接成功,恭喜你,环境搭建完毕。
常见问题排查(避坑指南)
-
连接超时(Timeout):
- 90% 的原因是阿里云防火墙没开 3306 端口,或者云服务器内部防火墙(ufw)拦截了。
- 检查内部防火墙:
sudo ufw status。如果是 active,需要放行:sudo ufw allow 3306/tcp。
-
Access denied for user ‘root’@’…’:
- 这是因为你在第三步中禁用了 root 远程登录。请使用第五步创建的普通用户登录。
-
Can’t connect to MySQL server on ‘xxx’ (111):
- 确认 MySQL 服务正在运行:
sudo systemctl status mysql。 - 确认
mysqld.cnf中的bind-address已修改为0.0.0.0。
- 确认 MySQL 服务正在运行:
-
性能瓶颈:
- 轻量服务器资源有限。如果网站流量稍大,建议调整
/etc/mysql/mysql.conf.d/mysqld.cnf中的innodb_buffer_pool_size。对于 1G 内存机器,设置为128M或256M即可;2G 内存可设为512M。不要设太大,否则会导致系统 OOM。
- 轻量服务器资源有限。如果网站流量稍大,建议调整
按照这个流程走,基本不会出错。如果有其他具体问题,欢迎继续交流。
云技术博客