云服务器连不上数据库?4步排查法+安全组配置实战指南

云服务器优惠活动直达入口: 阿里云爆款云服务器低至38元/年 | 腾讯云2核4G云服务器 528元/3年

你刚买了云服务器准备部署应用,结果数据库死活连不上?别急,这可能是新手最容易踩的“网络坑”。我们整理了一套可实操、可复现的排查流程,帮你快速定位是安全组、VPC、防火墙还是权限问题。

第一步:确认是不是安全组没开数据库端口(90%的问题出在这)

云服务器默认不会开放任何入站端口,包括 MySQL 的 3306、PostgreSQL 的 5432 或 Redis 的 6379。即使你数据库配置完全正确,只要安全组没放行,连接请求根本到不了服务进程。

  • 登录云控制台,找到你服务器绑定的安全组(Security Group)
  • 进入“入站规则”或“入方向规则”,检查是否允许目标端口(如 3306)
  • 建议先临时添加一条规则:源 IP 为 0.0.0.0/0,协议 TCP,端口 3306(仅用于测试,上线后应限制为具体 IP)

注意:有些平台还要求配置出站规则。如果你的数据库在另一台云主机上,服务器需要能“主动向外连接”,出站规则也得放行目标 IP 和端口。

小贴士:云产品续费较贵,建议一次性购买3年或5年,性价比更高。

腾讯云3年服务器特惠: 轻量 2核4G6M 服务器 3年 528元(约14.67元/月 了解详情 →

腾讯云服务器新购续费同价,避免第二年续费上涨

  • 轻量 2核2G4M 服务器 99元/年(约8.25元/月了解详情 →
    服务器4M带宽,访问速度更快,适合流量稍大的网站
  • 轻量 2核4G5M 服务器 188元/年(约15.67元/月了解详情 →
    服务器5M带宽 + 4G内存,性能均衡,适合中型应用
  • 轻量 2核4G6M 服务器 199元/年(约16.58元/月了解详情 →
    服务器6M带宽 + 4G内存,高性价比选择
服务器优势:安全隔离、弹性扩容、7×24小时运维保障、支持多种操作系统

立即查看详细配置和优惠,为您的项目选择最佳服务器

点击了解更多优惠信息

第二步:检查操作系统本地防火墙是否拦截

安全组只是云平台的第一道防线,服务器操作系统自身的防火墙(如 firewalld、ufw、iptables)也可能拦截流量。

  1. 查看端口是否开放(以 CentOS 为例):

    firewall-cmd --query-port=3306/tcp

  2. 若返回 no,执行永久开放命令:

    firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload

    阿里云服务器新购续费同价 - 新用户专享特惠,上云优惠聚集地

    • 2核4G ECS 高性价比服务器 199元/年 了解详情 →
      适用于中小企业官网、电商展示、轻量数据分析等
    • 2核2G e实例 云服务器 99元/年 了解详情 →
      续费同价,适用于建站、小程序等应用场景
    • 2核2G 轻量应用服务器 68元/年 了解详情 →
      200M峰值带宽,40GB ESSD云盘

    持续低价,让您的用云成本低廉、稳定可预期

  3. Ubuntu 用户可用 ufw:

    sudo ufw allow 3306/tcp

  4. 临时测试可清空 iptables(仅限测试环境):

    sudo iptables -F && sudo iptables -X && sudo iptables -P INPUT ACCEPT

⚠️ 警告:直接关闭防火墙会降低系统安全性,生产环境务必通过规则放行,而非全局关闭。

第三步:验证网络连通性与 VPC 配置

云服务器和数据库必须在同一网络环境下才能内网互通。常见错误包括:

  • 服务器在 VPC 网络,数据库在基础网络(经典网络)
  • 两者虽在同一地域,但属于不同 VPC
  • 跨账号部署,未建立 VPC 对等连接或云联网

排查方法:

  1. 使用 telnet 测试端口连通性:

    telnet 10.x.x.34 3306

    若提示 “Connected”,说明网络层通;若超时或拒绝,则网络不通。

  2. 若 telnet 失败,先用 ping 测试 IP 层连通性(注意:部分云数据库禁 ping,ping 不通不代表端口不通)
  3. 确认服务器与数据库是否在同一 VPC ID 下。若不在,需迁移实例或建立 VPC 互联

第四步:排查认证、配置与资源瓶颈

如果网络通了但依然连不上,问题可能出在数据库本身:

  • 用户名/密码错误:检查连接字符串中的凭据是否准确
  • 用户权限不足:数据库用户可能只允许从 localhost 登录,需授权远程访问:

    GRANT ALL PRIVILEGES ON . TO 'your_user'@'%' IDENTIFIED BY 'password';

  • 数据库未监听公网或内网 IP:检查配置文件(如 MySQL 的 my.cnf)中 bind-address 是否为 0.0.0.0 或具体内网 IP
  • 连接数耗尽:高并发下可能达到最大连接数限制,表现为“Too many connections”
  • 服务未启动:执行 systemctl status mysqld 确认服务运行状态

常见云数据库连接错误对照表

错误信息 可能原因 解决方向
Can't connect to MySQL server on 'x.x.x.x' (113) 网络不通 / 安全组未开放 检查 telnet、安全组、VPC
Host 'x.x.x.x' is not allowed to connect to this MySQL server 用户权限未授权远程 IP 执行 GRANT 授权 % 或指定 IP
Connection reset by peer 连接数满 / 服务崩溃 / 防火墙中断 查连接数、服务日志、资源使用率
No route to host 路由不可达 / 跨 VPC 未互通 确认是否同 VPC,或配置云联网

工具推荐:快速诊断连接问题

  • telnet:最基础的端口探测工具(若未安装,可用 nc -vz 10.x.x.34 3306 替代)
  • tcpdump:抓包分析连接是否到达服务器

    sudo tcpdump -i any port 3306

  • netstat / ss:确认数据库是否在监听

    ss -tuln | grep 3306

这些命令组合使用,能帮你快速判断问题是出在网络层、传输层还是应用层。

常见问题 FAQ

问题 解答
安全组开了 3306,为什么还是连不上? 可能操作系统防火墙未放行,或数据库未监听 0.0.0.0,也可能是用户权限未授权远程 IP。
telnet 能通,但应用连不上数据库? 检查应用连接字符串是否正确,数据库用户是否允许从该 IP 登录,以及是否达到最大连接数限制。
云服务器和数据库在不同账号下能内网互通吗? 可以,但需通过云联网(如 VPC Peering 或云企业网)打通两个 VPC,并配置路由和安全组。
如何临时测试数据库连通性? 在服务器上安装 MySQL 客户端,执行 mysql -h 内网IP -u 用户名 -p 直接测试。
数据库连接超时怎么办? 先确认网络延迟(ping),再检查数据库负载(CPU/内存),慢查询或资源不足会导致响应超时。
厂商 配置 带宽 / 流量 价格 购买地址
腾讯云 2核2G 4M 38元/年 点击查看
腾讯云 2核2G 3M 68元/年 点击查看
腾讯云 4核4G 3M 79元/年 点击查看
腾讯云 2核4G 5M 188元/年 点击查看
腾讯云 4核8G 5M 450元/年 点击查看
腾讯云 2核4G 6M 528元/3年(≈176元/年) 点击查看
阿里云 2核2G 200M 峰值 38元/年 点击查看
阿里云 2核2G 3M 固定 99元/年 点击查看
阿里云 2核4G —— 199元/年 点击查看

所有价格仅供参考,请以官方活动页实时价格为准。