直接上干货。腾讯云轻量应用服务器(Lighthouse)连接云数据库 MySQL,核心就卡在网络隔离和白名单配置这两块。很多新手报错 Can't connect to MySQL server 或者 Access denied,90% 都是这里没配好。
别整那些虚的,按这个步骤排查,保证能连上。
第一步:搞懂“内网”和“公网”的区别
这是最容易踩坑的地方。
-
如果你在同一地域(Region):
- 比如你的轻量服务器在“上海”,MySQL 也在“上海”。
- 最佳实践:走内网 IP。速度快、免费、安全。
- 你需要获取 MySQL 实例的“内网地址”,然后在轻量服务器上直接用这个地址连。
-
如果你在不同地域,或者不想用内网:
- 必须走公网 IP。
- 注意:轻量服务器的公网 IP 是固定的(除非你手动释放),但 MySQL 的公网地址通常需要你单独购买或开启公网访问功能(部分套餐默认不开启公网)。
- 警告:走公网要开防火墙端口,安全风险极高,仅限测试环境,生产环境强烈建议用内网。
第二步:配置云数据库 MySQL 的白名单
光有 IP 不够,腾讯云数据库默认只允许特定 IP 访问。
- 登录腾讯云控制台,找到你的 云数据库 MySQL 实例。
- 进入【安全设置】或【白名单设置】。
- 添加白名单:
- 方案 A(推荐,最灵活):填入轻量服务器的内网 IP(如果是同地域)。
- 方案 B(跨地域/网络):填入轻量服务器的公网 IP。如果不确定公网 IP,可以在轻量服务器上执行
curl ifconfig.me查看。
- 保存设置。注意:修改白名单后,可能需要几分钟生效,或者重启一下数据库连接池(一般不需要重启实例,但为了保险可以稍等片刻)。
第三步:确认轻量服务器的网络策略
轻量应用服务器有自己的防火墙规则,比传统 CVM 更简单但也容易忽略。
- 进入轻量应用服务器控制台。
- 找到【防火墙】选项卡。
- 检查是否放行了 3306 端口?
- 等等!这里有个误区!
- 如果你是从轻量服务器去连接 MySQL,轻量服务器是客户端。客户端不需要开放 3306 端口入站,而是需要能够出站访问 MySQL 的端口。
- 通常轻量服务器的默认防火墙是允许所有出站的。但如果你自己自定义过防火墙规则,确保没有阻断对目标 IP 的 3306 端口的出站流量。
- 大多数情况下,这一步不用动,除非你做了严格的出站限制。
第四步:在轻量服务器上测试连接
不要直接用代码连,先用命令行测,排除代码问题。
- SSH 登录到你的轻量应用服务器。
- 安装 MySQL 客户端(如果还没装):
# CentOS/RHEL yum install mysql -y # Ubuntu/Debian apt-get install mysql-client -y - 使用内网 IP 测试(假设同地域):
mysql -h <MySQL内网IP> -P 3306 -u <用户名> -p - 输入密码。
- 如果成功:恭喜,网络通了。接下来写代码就行。
- 如果超时(Timeout):网络不通。检查白名单、检查地域是否一致、检查轻量服务器防火墙出站规则。
- 如果拒绝访问(Access Denied):密码错,或者用户权限不对。去 MySQL 控制台看用户管理,确认该用户是否允许从
%或特定 IP 登录。
第五步:代码连接注意事项
拿到内网 IP 后,在你的代码里(Java/Python/PHP 等):
- Host 填内网 IP:例如
jdbc:mysql://10.0.x.x:3306/dbname - 不要用 localhost 或 127.0.0.1:除非你在轻量服务器上自建了 MySQL。连远程数据库必须填真实 IP。
- SSL 问题:腾讯云 MySQL 默认可能要求 SSL 连接。如果代码里报错
SSL handshake failed,需要在连接参数里加上useSSL=false(测试环境可接受)或者下载证书配置 SSL。
常见坑点总结
- 地域不同不能走内网:北京轻量连广州 MySQL,只能走公网。公网连接慢且贵,尽量把资源放在同一地域。
- 白名单格式错误:白名单填的是 IP 段,比如
10.0.0.5是对的,10.0.0.是错的。单个 IP 直接填,多个 IP 用逗号分隔。 - 密码特殊字符:如果你的数据库密码包含
@、#等特殊符号,在某些命令行工具或代码框架中可能需要转义,最好先改个简单密码测试连通性。 - 轻量服务器系统镜像:有些精简版 Linux 镜像没预装
mysql命令,记得先yum/apt install。
最后建议
- 生产环境:务必使用内网连接,并将 MySQL 白名单严格限制为轻量服务器的内网 IP。
- 开发测试:可以用公网 IP + 强密码 + 定期更换,但别把数据库暴露给整个互联网(即不要填
0.0.0.0/0)。
按这个流程走,基本不会出错。遇到具体报错信息,再贴出来分析。
CLOUD云计算