做WordPress的人,最怕看到什么?我的答案是这行英文:Error establishing a database connection。网站突然整个白屏,就剩这一句话,后台也进不去,用户那边全在报错。搁谁都慌。不过说句实在话,这报错虽然吓人,原因其实高度集中,就是数据库那边出了状况。今天给你一套排查顺序,照着走,多数情况十分钟内能救回来。

第一步:分清是全部还是个别页面
先别急着折腾服务器。如果全站都报这个错,那是数据库层面真的出了问题;如果只是个别页面报,那可能是那页面的查询超时或者触发了连接限制。全站报错的话,优先确认数据库服务本身还活着没——登录服务器看看MySQL或者MariaDB的服务状态,要是服务挂了,启动起来再看错误日志,很多时候到这一步网站就恢复了。
查服务状态和日志的命令也就这几条:systemctl status mysqld(有的系统是mariadb),服务没跑就systemctl start mysqld拉起来,再顺手看看错误日志,一般都在/var/log/mysql/或者/var/log/mysqld.log,tail一下就能看到数据库为啥罢工。服务正常的话,往下走。
第二步:核对wp-config.php的配置
服务正常还报错,那就检查WordPress自己的数据库配置,都在wp-config.php这个文件里,四个参数:数据库名、用户名、密码、主机地址,任何一个不对都连不上。最常出问题的场景:数据库密码改过但忘了同步更新这个文件;数据库搬了家,主机地址还写着localhost;或者账号权限被收窄了。打开文件核对一下,改对了基本就好。
要是你的数据库在独立的数据库服务器上(云数据库那种),那还得检查网络层:WordPress那台服务器的IP,在不在数据库的白名单里;安全组和防火墙有没有放行数据库端口。很多远程连接失败,根子都在白名单和端口上,配置看着全对,就是连不通,说的就是这种情况。
第三步:查资源,数据库是不是被拖垮了
服务和配置都没问题还连不上,那就要怀疑数据库是不是被资源问题拖垮了。最常见三样:磁盘写满了,数据库写不进去,干脆拒绝服务;连接数打满了,新连接一律不接待,这个之前的文章专门讲过;内存不够,数据库进程直接被系统杀了。挨个查:df -h看磁盘,free -h看内存,能登录数据库的话看看连接数,系统日志里grep一下有没有OOM的记录。
磁盘满了就清空间,清完数据库一般自己就缓过来了;要是反复被OOM杀,那得考虑加内存或者优化数据库的配置参数了,别光救火,火源得找着。
改配置之前,记得先备份
说个操作习惯:动wp-config.php或者数据库配置之前,先把原文件复制一份存着,改坏了随时能还原。这文件就几行字,但改错一个引号都能让整站报错,有备份在手,试错成本低很多。另外改完配置记得刷新一下页面缓存,有时候配置是对的,但缓存里还是旧的错误页面,把人都看懵了,清一下缓存再验证,别被假象骗了。
急救之后,防再犯的三件事
第一,给数据库单独建个专用账号,别让网站拿root跑业务,权限给最小够用的就行,出事儿了也好排查也好追责。第二,数据库的磁盘、内存、连接数都接上监控告警,快出问题的时候提前报警,别等整站瘫了才发现。第三,备份必须常做常验——万一数据库真坏了,有一份能恢复的备份,你心里就不慌,这跟前面讲的备份原则是一回事。
最后,报错还有孪生兄弟
顺便提一句,跟数据库连接错误经常一起出现的,还有504超时和500错误,有人容易搞混。数据库连接错误是压根连不上库;504是连上了但处理超时;500多半是程序自身的错。分清这三个,报错的时候你心里就更有谱了。总之,数据库连接错误这事,记住服务、配置、资源三步排查法,真遇上了按顺序走一遍,大多数都能快速解决,别一上来就想着重装WordPress,那真是下下策。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!