查看: 6|回复: 0

数据库连接失败?一步步教你排查并修复

[复制链接]

3607

主题

15

回帖

1万

积分

管理员

积分
10969
发表于 2026-5-7 23:14 | 显示全部楼层 |阅读模式
问题表现
运行程序或访问网站时,页面长时间加载后提示“无法连接到数据库”“Connection refused”或“Can't connect to MySQL server”等错误,可能导致业务中断或数据无法读取。
可能原因
  • 数据库服务未启动或意外崩溃
  • 连接配置信息(地址、端口、用户名、密码)有误
  • 防火墙或**组阻止了数据库端口(如3306、5432)
  • 数据库连接数达到上限,拒绝新连接
  • 网络不通(服务器间路由、DNS解析问题)

对应排查步骤

  • 检查数据库服务状态
    • Linux系统:
      1. systemctl status mysql
      复制代码
      1. service mysqld status
      复制代码
    • Windows系统:打开“服务”窗口,查看MySQL或PostgreSQL是否在运行。
      如果未运行,尝试启动:
      1. systemctl start mysql
      复制代码



  • 验证连接配置
    • 打开程序配置文件(如
      1. .env
      复制代码
      1. application.properties
      复制代码
      ),核对数据库地址(建议先用IP代替域名)、端口(默认MySQL 3306、PostgreSQL 5432)、用户名和密码。
    • 在数据库所在服务器上本地登录测试:
      1. mysql -u root -p
      复制代码
      ,确认密码正确。


  • 检查防火墙/**组
    • Linux:
      1. firewall-cmd --list-all
      复制代码
      1. iptables -L -n
      复制代码
      ,查看数据库端口是否开放。
    • 云服务器:登录控制台,检查**组入站规则,确保允许来自应用服务器的IP访问端口。
    • 临时关闭防火墙测试(不推荐生产环境):
      1. systemctl s** firewalld
      复制代码


  • 查看数据库连接数
    • 进入数据库执行:
      1. SHOW VARIABLES LIKE 'max_connections';
      复制代码
      查看上限。
    • 查看当前连接数:
      1. SHOW PROCESSLIST;
      复制代码
      1. SELECT count(*) FROM information_schema.processlist;
      复制代码
      如果接近上限,可临时调大:
      1. SET GLOBAL max_connections = 500;
      复制代码
      或修改配置文件重启生效



  • 网络连通性测试
    • 从应用服务器执行:
      1. ping 数据库IP
      复制代码
      (确认基本网络通)
    • 测试端口:
      1. telnet 数据库IP 3306
      复制代码
      (若不支持telnet,用
      1. nc -zv 数据库IP 3306
      复制代码

    • 若不通,检查路由器、VPN或云服务商的内网互通配置。


最终解决方案
  • 数据库未启动 → 启动服务,并设置开机自启(
    1. systemctl enable mysql
    复制代码
    )。
  • 配置错误 → 修改配置文件,注意密码中特殊字符需转义或使用URL编码。
  • 防火墙阻止 → 添加规则:
    1. firewall-cmd --permanent --add-port=3306/tcp
    复制代码
    并重载。
  • 连接数满 → 优化程序连接池(限制**连接数、及时释放)、或升级数据库配置。
  • 网络问题 → 确保应用与数据库在同一内网段,或使用云服务商的互联功能。

如果以上步骤仍未解决,请检查数据库日志(如
  1. /var/log/mysql/error.log
复制代码
)寻找更详细错误,或咨询DBA/云服务商技术支持。
今日推荐
抽帧加速节奏:被多数新手忽略的剪片救场技巧
前几天帮站里一个新人改毕业展的短片。他剪了个三年校园回忆混剪,素材堆得太满,每个镜头都硬留四五秒,放出来我看着都打哈欠。 太闷了。 他说我已经整体拉变速快放了啊,为什么节奏还是这么拖?我随手抽了几帧,换了个转场,整个片子直接活了。最后拿了优,他特意给我点了杯冰奶茶,说原来还有这种好用的技巧,之前剪片从来没想到。 别拿普通变速当抽帧,这根本是两回

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系362039258#qq.com(把#换成@)删除。

Powered by Discuz! X5.0

在本版发帖QQ客服返回顶部
快速回复 返回顶部 返回列表