阿里云轻量应用服务器(Simple Application Server)默认不支持直接通过公网 IP 远程连接 MySQL 数据库。
这是出于安全考虑,轻量服务器的防火墙规则在初始化时通常只开放了 Web(80/443)、SSH(22)等基础端口,而数据库端口(如 3306)默认是关闭的。要实现远程访问,你需要手动配置网络和安全策略。
以下是实现远程连接的具体步骤和注意事项:
1. 修改安全组规则
这是最关键的一步。你需要登录阿里云控制台,找到该轻量服务器的安全组设置:
- 入方向规则:添加一条新规则。
- 协议类型:TCP
- 端口范围:
3306(如果你使用的是非标准端口,请填写实际端口) - 授权对象:
- 如果希望允许所有 IP访问(不推荐用于生产环境),填写
0.0.0.0/0。 - 如果希望仅允许特定 IP访问(推荐),填写你本地电脑的公网 IP 地址或公司办公网段。
- 生效时间:立即生效。
2. 配置 MySQL 用户权限
仅仅开放防火墙是不够的,MySQL 服务端本身也需要允许远程连接:
- 登录到轻量服务器内部(通过 SSH)。
- 进入 MySQL 命令行:
mysql -u root -p。 -
执行以下 SQL 语句,将
your_password替换为你的密码,your_ip替换为允许访问的客户端 IP(或者使用%允许所有,但同样存在安全风险):-- 查看当前用户权限 SELECT user, host FROM mysql.user; -- 创建或修改用户,允许从任意 IP 连接 (示例) CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_password'; -- 或者修改 root 用户 (不推荐直接暴露 root) UPDATE mysql.user SET host='%' WHERE user='root'; -- 授权 GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;注意:在较新的 MySQL 版本中,直接使用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_plugin BY 'password';配合GRANT可能更稳妥,具体视版本而定。
3. 检查 MySQL 配置文件 (可选)
默认情况下,MySQL 绑定的是 127.0.0.1。如果需要确保它监听所有网卡,请检查 /etc/mysql/my.cnf 或 /etc/my.cnf 文件:
- 找到
bind-address = 127.0.0.1这一行。 - 将其注释掉(前面加
#)或者改为0.0.0.0。 - 重启 MySQL 服务使配置生效:
systemctl restart mysqld(或mysqld_safe)。
⚠️ 重要安全警告
由于轻量服务器通常部署在公网,直接开放 3306 端口面临极高的被暴力破解风险。强烈建议采取以下措施之一:
- 限制 IP 白名单:只在安全组中放行你个人的固定公网 IP。
- 使用 SSH 隧道:不要直接开放 3306 端口。保持安全组只开放 22 端口,然后在本机通过 SSH 命令建立隧道进行连接,这样最安全且无需修改 MySQL 配置。
# 本机执行 ssh -L 3306:127.0.0.1:3306 root@<你的轻量服务器公网IP> # 之后连接本地 3306 即可访问远程数据库 - 更换非标准端口:虽然不能防住扫描,但可以减少自动化脚本的攻击频率。
总结:阿里云轻量服务器支持远程 MySQL,但需要你在控制台的安全组中手动放行 3306 端口,并在数据库内部配置用户权限。为了安全起见,推荐使用SSH 隧道方式连接。
轻量云Cloud