连接腾讯云轻量应用服务器(Lighthouse)上的 MySQL,核心需要开启的是 3306 端口。
但这里有个大坑,很多新手直接去防火墙加规则然后连不上,是因为忽略了“安全组”和“MySQL配置”这两个环节。光开端口没用,还得看你怎么开的、谁在监听。下面把完整链路梳理清楚,避免你踩雷。
1. 腾讯云控制台层面:放行安全组
轻量应用服务器的网络隔离主要靠安全组。你需要确保入方向(Inbound)允许访问 3306 端口。
- 操作路径:控制台 -> 轻量应用服务器 -> 实例详情 -> 防火墙/安全组设置。
- 规则建议:
- 协议类型:TCP
- 端口范围:3306
- 授权策略:允许
- 授权对象:千万别填
0.0.0.0/0! 这是生产环境的大忌。- 如果是本地开发测试,填你当前电脑的公网 IP(可以用
ip.cn查一下)。 - 如果是其他云服务器连接,填那台云服务器的内网或公网 IP。
- 如果非要全开放(仅限极不重要的测试机),才考虑
0.0.0.0/0,但务必配合强密码。
- 如果是本地开发测试,填你当前电脑的公网 IP(可以用
2. MySQL 服务层面:绑定地址与用户权限
即使腾讯云防火墙放行了,MySQL 服务端可能根本不让你连,原因通常有两个:
A. 绑定地址限制(bind-address)
默认情况下,MySQL 为了安全,只监听本地回环地址 127.0.0.1。这意味着只有服务器本机能连,外部 IP 连不上。
- 检查方法:登录服务器,查看
/etc/my.cnf或/etc/mysql/my.cnf。 - 修改方法:找到
bind-address = 127.0.0.1,将其注释掉(前面加#),或者改为0.0.0.0。 - 重启生效:修改后必须重启 MySQL 服务(
systemctl restart mysqld或mysql)。
B. 用户权限限制(Host 字段)
MySQL 的用户权限是“用户名 + 主机”绑定的。默认创建的 root@localhost 用户只能从本机登录。
- 检查方法:登录 MySQL 后执行:
SELECT user, host FROM mysql.user; -
解决方法:如果你想让远程连接,需要创建一个允许任意主机(或特定 IP)访问的用户,或者修改 root 用户的 host。
-- 创建新用户并允许任意 IP 连接(注意替换 'your_password') CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password'; -- 赋予权限(以 test_db 为例) GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;注意:强烈建议不要直接修改
root@localhost的 host 为%,而是新建一个专用账号用于远程连接,降低风险。
3. 常见误区排查清单
如果你开了 3306 端口还是连不上,按顺序检查:
- 是否用了 IPv6? 轻量服务器默认可能优先 IPv6,而你的客户端工具只支持 IPv4。尝试在连接字符串中明确指定 IPv4 地址,或在 MySQL 配置中强制监听 IPv4。
- 本地防火墙/杀毒软件:Windows 电脑自带的防火墙有时会拦截出站连接,尤其是某些安全软件。暂时关闭试试。
- 端口被占用或监听错误:在服务器上执行
netstat -tuln | grep 3306,确认监听状态是0.0.0.0:3306而不是127.0.0.1:3306。 - 腾讯云轻量服务器的特殊性:轻量应用服务器没有独立的 VPC 子网概念(早期版本),其安全组规则比 CVM 简单,但逻辑一致。确保你修改的是该实例关联的安全组,而不是误改了其他实例的规则。
总结
要成功连接,你必须同时满足三个条件:
- 腾讯云安全组:入方向放行 TCP 3306 端口,且授权对象是你自己的 IP。
- MySQL 配置:
bind-address不是127.0.0.1(改为0.0.0.0或注释掉)。 - MySQL 用户权限:存在对应账号,且其
host字段允许你的来源 IP(如%或具体 IP)。
最后提醒一句:永远不要把数据库端口暴露给全网。 使用 SSH 隧道(SSH Tunneling)进行本地开发连接是最安全的方式——你在本地建立一条加密隧道到服务器,然后通过 localhost:3306 访问,这样根本不需要在腾讯云安全组里开 3306 端口,安全性提升几个数量级。
云技术博客