Error establishing a database connection原因及解决办法

86 阅读4分钟

这个问题通常可以归结为以下四大类原因:

  1. 数据库连接信息错误

    • 位置:网站根目录下的 wp-config.php 文件。
    • 问题:里面定义的数据库名、用户名、密码或数据库主机不正确。这在网站迁移、更换主机或重置数据库密码后很常见。
  2. 数据库服务未运行或崩溃

    • 问题:服务器上的 MySQL/MariaDB 服务可能由于资源耗尽(内存、CPU)、配置错误或意外原因而停止运行。
  3. 数据库本身损坏

    • 问题:数据库表可能因为插件/主题冲突、不当操作、服务器意外关机等原因而损坏。
  4. 服务器资源耗尽

    • 问题:服务器的内存、CPU 或数据库连接数达到上限,导致无法建立新的连接。

解决办法(从简到繁,逐步排查)

请按照以下顺序进行排查,大多数情况下问题都能在前几步解决。

第1步:检查网站本身(最简单)

  1. 刷新页面:有时候这只是临时性问题,刷新一两次可能就好了。
  2. 联系主机提供商:如果您使用的是虚拟主机,这是最快捷的方法。直接联系他们的技术支持,告诉他们您遇到了“数据库连接错误”,他们通常能很快从后台查明原因(通常是数据库服务重启或服务器过载)。

第2步:检查数据库连接信息

适用场景:您在迁移网站、修改过数据库密码或更换主机后出现此问题。

  1. 找到 wp-config.php 文件:通过 FTP/SFTP 或主机商提供的文件管理器,进入网站根目录,找到 wp-config.php 文件。

  2. 核对信息:打开此文件,找到以下四行代码:

    php

    复制下载

    define('DB_NAME', 'database_name_here');    // 数据库名
    define('DB_USER', 'username_here');        // 数据库用户名
    define('DB_PASSWORD', 'password_here');    // 数据库密码
    define('DB_HOST', 'localhost');            // 数据库主机(通常是 localhost)
    
  3. 与主机商提供的信息比对:确保这里的每一项都与您的主机控制面板(如 cPanel)里数据库信息完全一致。特别注意:

    • DB_HOST 有时可能是 127.0.0.1 或其他的,如 your-site.mysql.db,请以主机商提供的为准。
    • 密码中是否有特殊字符。
  4. 修正并上传:如果发现错误,修改后保存并重新上传覆盖原文件。

第3步:重启数据库服务

适用场景:数据库服务可能意外停止。

  • 如果您有服务器 root/管理员权限(VPS/独立服务器)

    • Linux 系统:使用 SSH 登录服务器,执行以下命令:

      bash

      复制下载

      # 对于 MySQL
      sudo systemctl restart mysql
      # 或者对于 MariaDB
      sudo systemctl restart mariadb
      
    • Windows 服务器:在“服务”管理工具中找到 MySQL 或 MariaDB 服务,并重启它。

  • 如果您是虚拟主机用户:您无法直接操作,请回到第1步,联系主机商客服让他们帮忙重启。

第4步:检查数据库表是否损坏

适用场景:网站突然崩溃,之前运行正常。

  1. 通过主机控制面板修复

    • 登录您的主机控制面板(如 cPanel)。
    • 找到 “数据库” 部分的 “phpMyAdmin”。
    • 进入 phpMyAdmin,选择您的网站数据库。
    • 选中所有数据表,在下拉菜单中选择 “修复表”。
  2. 通过 SSH 修复(如果您有权限)

    • 使用 SSH 登录服务器,运行以下命令(请将 your_database_name 和 your_username 替换为实际信息):

      bash

      复制下载

      mysqlcheck -u your_username -p --auto-repair --optimize your_database_name
      
    • 然后会提示您输入密码。

第5步:检查服务器资源

适用场景:网站在访问高峰期出现此错误。

  1. 检查磁盘空间

    • 通过 SSH 运行 df -h,查看磁盘使用率是否接近 100%。如果空间已满,需要清理文件。
  2. 检查内存和 CPU

    • 通过 SSH 运行 top 或 htop 命令,查看 MySQL 进程是否占用了过高的内存或 CPU。
  3. 检查数据库连接数

    • 如果网站访问量很大,可能会超过 MySQL 的最大连接数限制。您需要联系主机商调整 max_connections 参数,或者优化网站和数据库查询。