数据库连接失败
一句话:程序连不上数据库,常见原因是地址/端口/账号密码错、数据库没启动、防火墙/安全组没放行,或连接数超限。
它是什么
应用启动或运行时报"连不上数据库",本质是网络能不能到达数据库、以及认证信息对不对这两件事。本地开发和线上部署的常见原因不一样:本地多半是数据库没启动或配置文件写错,线上多半是安全组/防火墙没放行,或者数据库地址填了内网地址但应用在外网。
适合干什么
- 本地开发环境搭建数据库时排错
- 项目部署到服务器后连不上数据库
- 换了数据库服务商/连接串格式不对
不适合干什么
- 数据库能连上但查询很慢(那是慢查询问题,见 database-timeout/slow-sql)
普通人怎么用
按顺序排查:①数据库服务本身是不是真的启动了(本地用命令行工具连一下试试);②连接字符串里的地址、端口、用户名、密码、数据库名有没有抄错;③如果是云数据库,控制台里是不是要单独把你的服务器 IP 加进白名单/安全组。
进阶用户怎么用
生产环境常见坑是连接池打满(max connections 超了)——不是连不上,是拒绝新连接,报错文案和真正连不上很像,要看错误码区分;容器化部署还要注意数据库地址不能写 localhost,要写服务名或实际内网地址。
常见误区
- 以为报错就是数据库挂了,其实更多时候是网络没打通或者白名单没配
- 本地能连、线上连不上,第一反应应该是查安全组/防火墙,不是重装数据库
和相似工具的区别
- 和 database-timeout 不同:连接失败是压根建立不了连接,超时是连上了但对方长时间没响应
入门步骤
- 先用数据库自带的命令行客户端手动连一次,隔离出是不是应用代码的问题
- 检查连接字符串的每一段(协议/地址/端口/用户名/密码/库名)
- 看云服务商的数据库白名单/安全组设置