阿里云轻量应用服务器(Simple Application Server)默认不支持直接远程连接 MySQL 数据库。
这是出于安全考虑,轻量服务器的防火墙策略默认只开放了 Web 服务(80/443)、SSH(22)等基础端口,而数据库端口(如 MySQL 的 3306)在创建实例时通常处于关闭状态。此外,MySQL 默认配置也是只允许本地连接(localhost)。
若你需要从外部(如本地电脑、其他云服务器)连接轻量服务器上的 MySQL,必须按以下两个步骤进行配置:
1. 开放安全组/防火墙端口
你需要登录阿里云控制台,找到该轻量应用服务器的“防火墙”或“安全组”设置,手动放行 MySQL 端口。
- 操作路径:控制台 -> 轻量应用服务器 -> 选择实例 -> 点击“防火墙”。
- 添加规则:
- 方向:入方向
- 协议类型:TCP
- 端口范围:
3306(或其他你使用的端口) - 授权对象:建议填写你的本机公网 IP(例如
1.2.3.4/32),而不是0.0.0.0/0,以减小被扫描攻击的风险。
2. 修改 MySQL 配置文件
即使防火墙已开放,如果 MySQL 服务端配置未允许远程访问,连接依然会失败。你需要进入服务器内部修改配置。
- 登录服务器:通过 SSH 登录轻量服务器。
- 编辑配置文件(以 Ubuntu/CentOS 为例):
sudo vim /etc/mysql/my.cnf # 或者 CentOS 7+ 可能是 /etc/my.cnf - 修改 bind-address:
找到bind-address = 127.0.0.1这一行,将其注释掉(在前面加#)或修改为0.0.0.0:# bind-address = 127.0.0.1 bind-address = 0.0.0.0 -
创建远程用户并授权(非常重要):
登录 MySQL 命令行:mysql -u root -p执行以下 SQL 语句(将
'your_password'替换为你的密码,'%'代表允许任意 IP 访问,生产环境建议指定具体 IP):-- 创建允许远程登录的用户(MySQL 5.7+) CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_password'; -- 赋予权限(例如对 test_db 库的所有权限) GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%'; FLUSH PRIVILEGES; EXIT; - 重启 MySQL 服务:
sudo systemctl restart mysql # 或 sudo service mysqld restart
⚠️ 安全风险提示
由于轻量应用服务器通常没有企业级云防火墙的高级防护功能,直接暴露 3306 端口存在较高的安全风险(如暴力破解、勒索病毒)。请务必注意:
- 强密码:确保数据库密码足够复杂。
- 限制 IP:在安全组和 MySQL 用户授权中,尽量只允许受信任的特定 IP 地址访问,不要使用
0.0.0.0或%对所有开放。 - 替代方案:如果业务需要高安全性,建议购买阿里云 RDS(关系型数据库服务),它提供了更完善的白名单机制和自动备份功能;或者使用 SSH 隧道(SSH Tunneling)进行加密连接,这样无需在防火墙上开放 3306 端口。
云计算