WordPress报error establishing a database connection错误如何解决
今天小编打开码云笔记时,发现网站打不开,页面并显示Error establishing a database connection
错误,这是个什么鬼,虽然英文水平不怎么牛,但是大概的关键字认识,意思就是和数据库链接不上有关,网上一查也证实了我的想法翻译为“建立数据库连接时出错”。这可如何是好?如果对于不是很熟悉建站的小伙伴着实吓一跳,不知从何下手。网上百度一大堆解决方案也解决不了,都是千篇一律的东西,在网上找了相关资料也找朋友请教了一下,逐一排查原因,功夫不负有心人,最后终于找到解决办法,所以特意整理下来分享给大家,以免大家和我一样采坑。
最简单的方法就是重启服务器或者用service mysqld restart
命令(MySQL 数据库)或者systemctl restart mariadb.service
命令(MariaDB 数据库)可以暂时解决问题,过一段时间还会出现。
再次分析原因可能是 Apache2 占用内存过高,MySQL/MariaDB 运行一段时间后会自动退出所致,解决方法:
1、将 Apache2 换成 Nginx 或其他轻量级 Web 服务器。
2、不想更换 Apache2 的可以增大服务器物理内存或添加 Swap 交换文件。
3、不想更换 Apache2 也不想增加服务器物理内存,且网站访问量不大,可以尝试修改 Apache2 配置文件(文件路径/etc/httpd/conf/httpd.conf
)。Apache2 目前有三种稳定的 MPM(Multi-Processing Module
,多进程处理模块)模式,分别是 prefork,worker 和 event。(查看 Apache2 的 MPM 模式,可以使用httpd -V
命令。)
编辑/etc/httpd/conf/httpd.conf
文件,添加下面内容:
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 100 MaxRequestWorkers 100 MaxConnectionsPerChild 2000 </IfModule>
说明:
<IfModule mpm_prefork_module> StartServers 5 #推荐设置:小=默认 中=20~50 大=50~100 MinSpareServers 5 #推荐设置:与 StartServers 保持一致 MaxSpareServers 10 #推荐设置:小=20 中=30~80 大=80~120 ServerLimit 150 #推荐设置:小=500 中=500~1500 大型=1500~3000 MaxRequestWorkers 150 #推荐设置:小=500 中=500~1500 大型=1500~3000 MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=10000~500000 </IfModule>
注:在 Apache2.3.13 以前的版本 MaxRequestWorkers 被称为 MaxClients。此外,设置 ServerLimit 参数最好与 MaxRequestWorkers 的值保持一致。
恩,貌似还没有解决我的问题,那么,我们使用 WordPress 提供的调试机制来看看到底是哪里有问题吧!
首先应该做的是确保在站点的前端和站点的后端(wp-admin)上都得到相同的错误。如果错误消息在两个页面上都相同“建立数据库连接时出错”。我们可以按照下面的步骤执行。
在 wp-config.php 文件中添加以下代码:
define('WP_ALLOW_REPAIR', true);
保存以后,我们执行下面的 url 来访问:http://域名/wp-admin/maint/repair.php
访问该 URL 的主要功能是用来修复损坏的数据库。修改完成后,我们需要从 wp-config.php 文件中删除上面添加的代码。
如果您更改了 root 密码或数据库用户密码,那么您还需要更改此文件 wp-config.php。确保配置的数据库的用户名和密码都正确。
define('DB_NAME', '数据库名'); define('DB_USER', '数据库用户名'); define('DB_PASSWORD', '数据库密码'); define('DB_HOST', '主机');
注意在输入以上信息时不要输错。另外当我们的网站流量过大时,也会出现数据库连接错误。
如果同一个服务器上有多个服务,可以访问其他服务看看是否正常,判断是不是数据库服务器导致的。
网上的方法:
第一种:看你的 VPS 控制面板(一般宝塔或者 wdcp)能不能连上,如果你的控制面板连不上的话那就说明是你的 vps 中的 mysql 服务没有启动,所以这个时候你需要启动你的 mysql 服务即可。
启动服务如下service mysqld startservice pureftpd startservice wdapache startservice httpd startservice nginxd start
第二种:磁盘空间可能满了
是的,你的 vps 磁盘空间满了,也会导致 mysql 服务启动不起来,这个时候需要清理一下你的 vps 硬盘。
在 wdcp 里面你可以看到磁盘的数据使用量,用 putty 连接你的 VPS 也是可以查看的。
这个问题是我亲自遇到的。
另外还需要判断,你所使用的用户的权限是否足够。还有是否设置了拒绝远程连接。
最后,请注意任何操作数据库前,请注意备份,以免发生意外。
第三种:控制面板可以打开,只是一个网站的数据库连接不上。
那么这个情况绝大多数都是因为你的这个网站的 mysql 数据库里面有一张数据表出了问题。
这个时候你需要登录你的控制面板,进入到 phpmyadmin 里面,找到你的数据库,查看你那个数据库里面是不是有一张表处于“使用中”状态。
选中这样表进行修复即可,你的网站就会恢复正常。
我把上述提供的方法都排除了之后发现,网站还是处于 Error establishing a database connection 状态。仔细一想,原来是昨天我在 WordPress 里面修改了数据库密码,结果没在 ftp 里面修改,所以我连接了网站 FTP,查看了一下 wp-config 这个文件,发现数据库的密码是不对的,重新填入正确的密码,网站打开正常。
虚惊一场,不过也好,把方法都用了一遍,提升一下自己。
通过这个问题我发现很多问题发生先从自身找原因,看看是不是最近自己操作了那些文件,改了那些东西,导致网站出现的类视情况,这样就更好更快的解决问题,最后在用度娘帮忙。以上就是今天 WordPress 网站出现 Error establishing a database connection 解决办法,希望对发家有帮助。
码云笔记 » WordPress报error establishing a database connection错误如何解决
你好,我的站已经连着两天出现两次这种情况了,重启服务器就恢复了,上面的方法都不行,请问还有其他原因吗?(我的是nginx服务器)
你看看数据库表出问题没,数据库端口有没有放行,看看这是不是导致网站连不上数据库
:smile:不错的解决方法 :razz:
楼主逗了,和自己开了一个玩笑,哈哈
正是我所需要的,哈哈,我也遇到过 :idea:
我也是大意啊,忘了修改ftp上的数据库密码 :mrgreen: