El mensaje “error al establecer conexión con la base de datos” es de los pocos que WordPress muestra sin rodeos: la web entera desaparece y en su lugar queda esa frase sobre fondo blanco, tanto para tus visitantes como para ti. Significa exactamente lo que dice: el código PHP de WordPress no consigue comunicarse con la base de datos MySQL o MariaDB donde viven tus entradas, páginas, usuarios y ajustes. Sin esa conexión no hay nada que mostrar. Las causas caben en cuatro grupos —credenciales incorrectas en wp-config.php, servidor de base de datos caído o saturado, base de datos corrupta y, con menos frecuencia, disco lleno o un ataque—, y todas tienen solución sin perder contenido. En esta guía las revisamos en orden, del diagnóstico rápido a la reparación, con los fragmentos de configuración exactos que necesitas tocar.
Qué significa el error al establecer conexión con la base de datos
WordPress está dividido en dos mitades: los archivos PHP (el motor) y la base de datos (el contenido). En cada visita, PHP se conecta a MySQL usando cuatro datos guardados en el archivo wp-config.php: nombre de la base de datos, usuario, contraseña y servidor. Si cualquiera de los cuatro es incorrecto, o si el servidor de base de datos no responde, la conexión falla y aparece el error.
Primer diagnóstico en 30 segundos: intenta abrir tudominio.com/wp-admin.
- Si ahí ves un mensaje distinto, del tipo “una o más tablas de la base de datos no están disponibles”, la conexión funciona pero la base de datos está corrupta: salta directamente a la sección de reparación.
- Si ves el mismo error de conexión en todas partes, el problema está en las credenciales o en el servidor: sigue en orden.
Y una pregunta clave antes de tocar nada: ¿qué cambió justo antes? ¿Migraste la web, cambiaste la contraseña del hosting, instalaste algo? El error rara vez aparece solo; en los errores comunes al instalar WordPress, equivocarse con los datos de la base de datos ocupa el primer puesto.
Revisa las credenciales en wp-config.php
Conéctate por FTP o abre el gestor de archivos de tu hosting y localiza wp-config.php en la carpeta raíz de WordPress. Dentro verás cuatro constantes como estas:
/** El nombre de tu base de datos de WordPress */
define( 'DB_NAME', 'nombre_basedatos' );
/** Tu nombre de usuario de MySQL */
define( 'DB_USER', 'usuario_bd' );
/** Tu contraseña de MySQL */
define( 'DB_PASSWORD', 'contraseña_bd' );
/** Host de MySQL (casi siempre localhost) */
define( 'DB_HOST', 'localhost' );
Compara esos valores con los que muestra el panel de tu hosting (en cPanel: sección “Bases de datos MySQL”; en Plesk: “Bases de datos”). Los fallos típicos:
- Prefijos omitidos: en hosting compartido, el nombre real suele ser
usuario_nombre(por ejemploc1234_wp), no solowp. - Contraseña cambiada: si alguien regeneró la contraseña del usuario de MySQL desde el panel, wp-config.php sigue guardando la antigua. Crea una nueva desde el panel y actualiza la constante.
- DB_HOST incorrecto: en la mayoría de hostings es
localhost, pero algunos (IONOS, SiteGround en ciertos planes, servidores con MySQL separado) usan un host propio del estilodb5001234567.hosting-data.ioo una IP, a veces con puerto:127.0.0.1:3306. El valor correcto aparece en el panel del hosting.
Para comprobar las credenciales sin depender de WordPress, sube por FTP un archivo temporal test-db.php 包含此内容并在浏览器中打开:
<?php
$conexion = mysqli_connect( 'localhost', 'usuario_bd', 'contraseña_bd', 'nombre_basedatos' );
if ( ! $conexion ) {
die( 'Fallo de conexión: ' . mysqli_connect_error() );
}
echo 'Conexión correcta';
Si dice “Conexión correcta”, las credenciales están bien y el problema es otro (sigue leyendo). Si falla, el propio mensaje te orienta: “Access denied” apunta a usuario o contraseña incorrectos, y “Unknown database” a un nombre de base de datos equivocado. 完成后立即删除此文件: 包含你的明文密码。
Comprueba también que el usuario tiene permisos sobre la base de datos: en cPanel, en “Bases de datos MySQL”, el usuario debe aparecer asignado a la base con todos los privilegios. Tras una migración es habitual crear la base y el usuario pero olvidar vincularlos.
检查数据库服务器
如果凭据正确,下一个嫌疑对象就是MySQL服务器本身:
- 服务器宕机: 在VPS中你可以使用...验证
systemctl status mysql94. 。如果不是,请点击“优化Wordfence防火墙”并按照说明下载mariadb)并使用...重启systemctl restart mysql。在共享主机中你没有访问权限:请检查提供商的状态页面或提交工单。 - 流量或查询过载: 访问高峰、带有繁重查询的插件或针对...的暴力攻击
wp-login.php可能会耗尽可用连接。错误时而出现时而消失:这是典型的模式。根本解决方案是缓存、优化,如果重复出现,则需要一个拥有更多资源的主机方案。 - 磁盘已满: 如果服务器无法写入,MySQL可能会拒绝工作。检查面板中的磁盘使用情况:巨大的日志文件和累积的备份是常见的占用者。
- phpMyAdmin作为温度计: 如果phpMyAdmin打开并显示你的表,则服务器正常运行,问题出在凭据或损坏。如果phpMyAdmin也无法连接,则服务器已宕机,问题在于主机商。
修复损坏的数据库
表格可能因服务器意外重启、磁盘问题或写入中断而损坏。WordPress包含一个内置的修复模式。通过将此行添加到 wp-config.php, justo encima de la línea “¡Eso es todo, deja de editar!”:
define( 'WP_ALLOW_REPAIR', true );
然后在浏览器中访问此地址:
https://tudominio.com/wp-admin/maint/repair.php
Verás dos botones: “Reparar base de datos” y “Reparar y optimizar”. Usa el primero (el segundo tarda bastante más). Al terminar, 删除wp-config.php中的该行:该修复页面不要求密码,不应保持可访问。
La alternativa manual es phpMyAdmin: selecciona la base de datos, marca todas las tablas y en el desplegable inferior elige “Reparar tabla”. Verás además qué tabla concreta estaba dañada. Antes de reparar nada, si el hosting te lo permite, exporta una copia de la base de datos tal cual está: incluso corrupta, es tu red de seguridad si algo va a peor.
其他原因:迁移、黑客攻击和wp-config损坏
- 你刚刚迁移了网站: 90%的迁移后连接错误是由于wp-config.php仍然指向旧服务器的数据库,或者新提供商的DB_HOST不同。使用新主机的数据检查这四个常量。
- 网站URL已更改: 这不会导致连接错误,但经常被混淆;如果网站在迁移后加载时没有样式或重定向错误,那问题是另一个(选项表中的siteurl和home)。
- 攻击或感染: 有些恶意软件会修改wp-config.php或删除表。如果你在文件中发现奇怪的代码、你未创建的管理员用户或丢失的表,请将此事件视为黑客攻击:我们将在 被攻击的WordPress清理指南 以及在 增强 WordPress 安全性的技巧.
- 恢复备份: 如果你有最新的数据库备份,当修复不起作用时,从phpMyAdmin导入(先删除损坏的表)通常是最快的方法。
快速检查清单
- 在...中看到相同的错误吗?
/wp-admin?如果消息提到修复,请直接进入修复模式。 - 故障前发生了什么变化?(迁移、密码、插件、更新)。
- 对照主机面板验证DB_NAME、DB_USER、DB_PASSWORD和DB_HOST。
- 使用test-db.php脚本测试连接(之后请删除它)。
- 确认MySQL用户对数据库拥有权限。
- phpMyAdmin能连接吗?如果不能,请联系主机商:服务器已宕机。
- 使用WP_ALLOW_REPAIR修复表,并在完成后移除该常量。
- 如果一切都不奏效,请恢复最新的备份并加强安全性。
如何预防下一次惊吓
网站恢复后,花十分钟确保它不再发生。安排自动备份,包括数据库——每日数据库备份和每周文件备份是一个很好的起点——并时不时检查这些备份是否真的可以恢复。激活页面缓存以大幅减少到达MySQL的查询数量:一个缓存的网站可以承受流量高峰,而没有缓存的网站则会崩溃。限制登录尝试次数,以防止机器人消耗连接,并定期清理数据库(修订、过期瞬态、已删除插件的表),因为轻量级的数据库修复更快,损坏更少。最后,将当前的数据库凭据记录在一个安全的地方:在这个错误中浪费的一半时间都花在寻找它们上了。
常见问题
如果出现这个错误,我是否丢失了内容?
几乎从不。这个错误意味着WordPress无法与数据库通信,而不是数据库消失了。凭据纠正或表修复后,所有内容都会恢复。真正的数据丢失只发生在没有备份的严重磁盘故障中,而备份就是为此而存在的。
为什么错误时而出现时而消失?
这种间歇性模式表明MySQL服务器过载:由于流量高峰、繁重插件或机器人攻击登录而导致的同时连接过多。通过页面缓存来缓解,阻止机器人,如果问题持续存在,你需要更多的主机资源。
建立数据库连接错误会影响SEO吗?
如果持续几分钟,不会。如果持续数天,Google最终会取消索引返回错误的页面。因此,最好尽快修复它,对于计划中的长时间停机,应提供503维护代码。
插件会导致这个错误吗?
直接来说这很罕见,但插件可能会通过大量查询使MySQL过载或损坏其自身的表。如果错误与安装特定插件同时发生,请通过FTP重命名其文件夹来禁用它,并观察问题是否消失。
结论
建立数据库连接错误令人恐惧,因为它会导致整个网站瘫痪,但其诊断是WordPress中最系统化的之一:凭据、服务器、损坏,并按此顺序。通过对照主机面板验证wp-config.php中的四个常量、连接测试脚本和内置修复模式,绝大多数情况可以在不到一小时内解决,且不会丢失任何内容。有两点经验值得吸取:始终保持数据库的最新备份,因为这能将最坏的情况变成例行公事;当错误是间歇性时,不要忽视它:这是你的主机空间不足或有人过度访问你的网站的警告。