阿里云轻量应用服务器(Simple Application Server)默认不支持直接远程连接 MySQL 数据库,但可以通过配置安全组规则和防火墙来开启远程访问。
由于轻量服务器的设计初衷是简化运维,其网络策略比 ECS 更严格,默认情况下只允许特定端口(如 HTTP/HTTPS、SSH 等)的入站流量。要允许外部远程连接 MySQL(默认端口 3306),你需要手动完成以下关键步骤:
1. 在控制台配置安全组
这是最关键的一步,用于放行云层面的网络请求。
- 登录阿里云控制台,进入轻量应用服务器实例详情页面。
- 点击左侧菜单中的安全组。
- 找到或新建一个安全组规则,添加一条入方向规则:
- 授权对象:填写你的本地 IP 地址(例如
192.168.1.5)以获得更高安全性;若需任意 IP 访问,可填0.0.0.0/0(生产环境强烈不建议)。 - 协议类型:选择
TCP。 - 端口范围:填写
3306。 - 优先级:保持默认即可。
- 授权对象:填写你的本地 IP 地址(例如
2. 检查服务器内部防火墙
如果安全组已放行但仍无法连接,可能是操作系统内部的防火墙拦截了请求。
- CentOS/Alibaba Cloud Linux:检查
firewalld或iptables。# 临时关闭测试(仅用于排查) systemctl stop firewalld # 或者永久开放 3306 端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload - Ubuntu/Debian:检查
ufw。sudo ufw allow 3306/tcp
3. 修改 MySQL 配置文件 (可选但推荐)
默认情况下,MySQL 可能只监听 127.0.0.1。为了允许远程连接,需要修改 /etc/my.cnf (Linux) 或 my.ini (Windows) 文件:
- 找到
bind-address配置项。 - 将其修改为
0.0.0.0(允许所有网卡监听)或直接注释掉该行(默认即为 0.0.0.0)。 - 重启 MySQL 服务使配置生效。
4. 创建远程用户并授权
即使网络通了,MySQL 内部也需要有权限允许远程账号登录。默认创建的 root 用户通常只允许本地 (localhost) 登录。
-
登录 MySQL 后执行以下 SQL 命令(以 MySQL 5.7+ 为例):
-- 创建一个允许远程登录的用户(将 'your_password' 替换为你的密码) CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password'; -- 赋予该用户对指定数据库的权限(或者使用 *.* 赋予所有库权限,视需求而定) GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;注意:出于安全考虑,建议将
'%'替换为具体的客户端 IP 地址,而不是允许所有 IP。
⚠️ 重要安全提示
开启远程 MySQL 访问会显著增加数据库被暴力破解或攻击的风险。在生产环境中,请务必遵循以下最佳实践:
- 不要对公网开放 3306 端口:如果必须网络访问,尽量通过云服务器 SSH 隧道或堡垒机进行连接,而不是直接暴露端口。
- 限制 IP:在安全组和 MySQL 用户授权中,严格限制允许的源 IP 地址。
- 使用强密码:确保数据库账户密码足够复杂。
- 定期备份:防止数据丢失。
完成上述配置后,你就可以使用 Navicat、DBeaver 或命令行工具从本地电脑成功连接到轻量服务器上的 MySQL 数据库了。
CLOUD技术博