Si has llegado hasta aquí es porque tu página web ha dejado de funcionar. Ante ti tienes una pantalla complemente en blanco y una simple frase en negro. En ella pone «Error al establecer una conexión con la base de datos«.
O quizás lo tienes en inglés y se puede leer «Error establishing a database connection».
En cualquier caso, la cuestión es que estás algo asustado. ¡No puedes hacer nada en tu web! Te has quedado sin acceso al panel de control y sin poder añadir nuevo contenido. Sin embargo, lo peor de todo es que tus visitas observan el mismo problema que tú ????.
Pero no te preocupes: tiene fácil arreglo.
En esta entrada de blog te explico para empezar porqué se produce este error de «error al establecer una conexión con la base de datos».
Así entenderás la situación en la que te encuentras, lo cual te ayudará a prevenir el error en el futuro.
Y por supuesto te muestro paso a paso cómo solventar el problema. Así que sigue leyendo que en cuestión de pocos minutos ya tendrás tu web en marcha otra vez ????.
Más información sobre este error
Aún recuerdo la primera vez que vi en pantalla «Error al establecer una conexión con la base de datos». Me quedé con la cara a cuadros pensando: ¡Pero si hace 3 segundos aquí tenía mi página web! Me acojoné y es posible que llorase un poco (no lo tengo claro).
En cualquier caso, lo cierto es que hasta que lo solucionas pasas un mal rato. Sobretodo si la web es ya visible para cualquiera. Es entonces cuando piensas: seguro que justamente ahora tengo un cliente potencial viéndola. Si es el caso, sin duda la impresión que se estará llevando es malísima.
Pero bueno, como he comentado, este error tiene fácil arreglo. De hecho, es uno de los errores más habituales en WordPress. Así que don’t worry, que para eso estamos ????.
Seguramente tengas ante ti algo parecido a esto:
Además, si intentas acceder a tu panel de control (www.tudominio.com/wp-admin/), te sale lo siguiente:
Esta última imagen, por cierto, ya te da algún indicio de lo que debes hacer para solucionar el error. Pero yo voy a ir más allá, explicándote paso a paso lo que debes hacer.
¿Qué significa este error?
Si ya sabes un poco qué es WordPress, sabrás que para funcionar utiliza lo siguiente:
- Archivos PHP: en ellos figuran las directrices. Básicamente determinan qué debe hacer cada elemento de tu web.
- Una base de datos MySQL: aquí se almacena toda la información generada por tu web. Por ejemplo, usuarios, páginas o entradas de blog.
Como su nombre indica, este error te está diciendo que ambos elementos no pueden comunicarse. Te recuerdo lo que ves: «Error al establecer una conexión con la base de datos». Es decir, tienes al menos un archivo PHP de tu web que no consigue localizar la información que necesita.
¿La causa? No puede conectar con la base de datos. ¿La consecuencia? No tiene ninguna información que mostrar y la página te sale en blanco con el mensaje de error.
Posibles causas
Existen diferentes motivos que explican el porqué ocurre este error. La causa más habitual es que hayas olvidado decirle a WordPress que has cambiado algún parámetro de la base de datos. Esta situación puede producirse porque:
- Acabas de migrar tu web a otro hosting o dominio.
- Has cambiado la contraseña de tu base de datos. O mejor dicho, del usuario que controla tu base de datos.
- No has sabido cómo instalar WordPress correctamente.
Es posible que leyendo estas posibles causas hayas visto la tuya. A mi me ha pasado a menudo. Como ya me sé la lección, cuando en ocasiones veo la pantalla en blanco, me digo a mi mismo: «Mierda Pablo, ¡te has olvidado X!».
Bueno, pues ahora que ya entiendes mejor qué sucede, voy a explicarte cómo solucionar el error. Estupendo, ¿verdad? ????
El archivo wp-config.php
Lo verás más adelante pero te lo avanzo ya.
La solución a «Error al establecer una conexión con la base de datos» pasa sí o sí por wp-config.php.
Por eso creo que puede interesarte conocerlo mejor antes de «jugar» con él.
Qué información contiene
La información más importante dentro de tu wp-config.php es la relativa a tu base de datos. Concretamente, tienes lo siguiente:
- Nombre de la base de datos.
- Nombre del usuario MySQL que accede a la base de datos.
- Contraseña del usuario MySQL.
- Localización de la base de datos.
Pero esto no es todo lo que nos interesa de wp-config.php.
Este archivo contiene otro dato que es interesante para resolver el error de conexión a la base de datos que tienes. Se trata del prefijo de las tablas MySQL de WordPress.
¿De qué estoy hablando?
El prefijo es lo que sale en el nombre de toda tabla de la base de datos de un mismo WordPress. Fíjate en la imagen anterior. Como prefijo tenemos «wp_» y es el que viene por defecto cuando instalas WordPress.
Sin embargo, y como medida de seguridad, en la instalación de WordPress yo siempre recomiendo que cambies el prefijo por otro. Uno con letras y números que no signifiquen nada. Por ejemplo, «lkgf491_» sería un prefijo único y por lo tanto más seguro.
Si aún no te queda claro esto del prefijo, a continuación tienes una imagen de la base de datos de un WordPress que no tiene el prefijo por defecto. Verás como todas las tablas empiezan por el mismo prefijo.
Dónde encontrarlo
wp-config.php es un archivo PHP que puedes localizar en el directorio en el que tienes instalado tu WordPress. Concretamente, en la carpeta raíz o base.
Tienes dos formas de llegar hasta este archivo: por FTP o por WebFTP. Si desconoces cómo hacerlo, en esta entrada de blog te explico cómo acceder a WordPress vía FTP. Es rápido de aprender y necesario. El motivo es sencillo: debes poder hacerlo para solucionar el error que te ha traído hasta aquí.
Solucionando «Error al establecer una conexión con la base de datos»
Para solucionar lo que te está pasando, básicamente debes comprobar que la información que figura en wp-config.php es correcta. A continuación te muestro cómo comprobar cada dato.
Pero antes déjame decirte que yo voy a utilizar mi panel de control y éste puede ser diferente al tuyo. El mío se llama cPanel y es seguramente el más utilizado. Si tu proveedor de hosting lo utiliza, perfecto, pues podrás seguir al milímetro las explicaciones. En cambio, si el tuyo es diferente, lo que viene a continuación te guiará para que encuentres las opciones concretas en tu caso.
El nombre de la base de datos
#1: Dirígete a la opción «MySQL Bases de datos».
Encontrarás esta opción dentro del apartado «Bases de datos».
#2: Anota el nombre de tu base de datos
Busca la sección en la que se listan tus bases de datos y fíjate en la columna con sus respectivos nombres.
Lo normal es que tú tengas tan sólo una base de datos creada. Así que la búsqueda es fácil pues en la columna «Base de datos» tan sólo tendrás una fila. En cambio, si tienes diferentes bases de datos (y por lo tanto diferentes webs), busca la que se corresponda a la web en la que te aparece el error de conexión.
#3: Comprueba el nombre de la base de datos que figura en wp-config.php.
Abre el archivo PHP en cuestión y fíjate en el campo relativo al nombre de base de datos.
¿Coincide con el nombre real?
- Si sí, el error recae en algún otro campo que vamos a ver a continuación.
- Si no, pues corrígelo de inmediato y guarda el archivo. Con esto habrás solucionado (en parte) el error. Yo igualmente comprobaría el resto de datos pues puede que haya otro erróneo.
El usuario MySQL
El usuario MySQL es el que accede a tu base de datos para realizar cambios en ella. Para ello necesita un nombre de usuario, una contraseña y tener los permisos suficientes para actuar. Así que si tu web tiene un error estableciendo una conexión con la base de datos, puede que tenga relación con éstos.
Su nombre
#1: Dirígete de nuevo a la opción «MySQL Bases de datos» de tu cPanel.
#2: Localiza el nombre de tu usuario MySQL
Para ello debes mirar el apartado relativo a usuarios MySQL y sus nombres. En cPanel lo encontrarás en la parte inferior de la pantalla.
Si es tu primera web, tendrás un sólo usuario MySQL. En cualquier caso, anota el nombre del usuario MySQL de la web que tienes afectada por el error.
#3: Comprueba el nombre del usuario MySQL que figura en wp-config.php.
Accede al archivo por FTP o WebFTP y verifica que el nombre del usuario MySQL que aparece en él coincide con el que has anotado.
¿Es el mismo nombre?
- Si el usuario MySQL es el mismo, entonces el error está en otro campo.
- Si no lo es, corrígelo y guarda el archivo. Puedes intentar ver si con esto tu web ya no muestra «error al establecer una conexión con la base de datos». ¿El error persiste? Sigue con este blogpost para comprobar el resto de campos de wp-config.php.
Su contraseña
#1: Vuelve al apartado de usuarios MySQL.
#2: Establece una nueva contraseña para el usuario MySQL.
Debes hacer clic en la opción «Establecer contraseña» del usuario MySQL que te interesa. La razón tras ello es que no puedes consultar la contraseña actual. Sólo cambiarla por una nueva.
¿Te da palo? Bueno, a mi me parece una buena medida de seguridad. Además, el único lugar en el que debes poner la contraseña del usuario MySQL es en el archivo wp-config.php. Es decir, que tampoco hablamos de mucho trabajo, ¿eh? ????
Cuando hagas clic en «Establecer contraseña» verás lo siguiente:
Desde aquí puedes escribir el nuevo password que quieres asignarle al usuario MySQL. Siempre aconsejo que la contraseña sea lo más complicada posible. Por eso yo de ti utilizaría la que me diera el «Generador de contraseñas».
En cualquier caso, anota la nueva contraseña y dale a «Cambiar contraseña».
#3: Comprueba la contraseña del usuario MySQL que figura en wp-config.php.
Asegúrate de que pones la misma contraseña que has anotado previamente. Al completo. Dale a guardar el archivo PHP y verifica si ha desaparecido el mensaje «Error al establecer una conexión con la base de datos».
¿Sí? ¡Estupendo!
¿Aún no? Tranquilo, sigue leyendo que ya queda poco ????
Sus permisos
Imagina que tú eres un usuario MySQL. La situación es como cuando entras en un piso de alquiler. Seguramente quieras saber qué puedes hacer y que no. ¿Puedes pintar paredes? ¿Hacer agujeros en la pared? ¿Tener una mascota?
Pues un usuario MySQL necesita que le des permisos para poder operar en la base de datos. Es decir, que tú puedes tener wp-config.php bien rellenado que tu web no funcionará (aún). Y seguramente sea por una cuestión de permisos.
A continuación te muestro cómo asignar de nuevo el usuario MySQL a la base de datos para asegurarnos que tiene todos los privilegios. Si no utilizas cPanel, es posible que no veas ninguna opción parecida. En este caso, contacta con tu proveedor y pregúntaselo.
Selecciona el usuario MySQL y la base de datos que te interesan, y dale a «Añadir».
En este paso, tan sólo debes hacer clic en «Todos los privilegios» y luego en el botón «Hacer cambios».
Si con esto el mensaje «Error al establecer una conexión con la base de datos» no desaparece, ya sabes. Toca seguir leyendo ⬇️
El hostname MySQL
El hostname es el lugar en el que se encuentra la base de datos. Por defecto se trata de «localhost». Es el lugar más comúnmente utilizado por los diferentes proveedores de hosting.
De todas formas, mira si por algún lado del panel de control del hosting tienes indicaciones al respecto. Si no las hay, algo habitual, consúltalo con tu proveedor.
El prefijo de las tablas
Si has verificado todo lo anteriormente comentado, y aún te marca error estableciendo una conexión con la base de datos, sólo queda verificar un campo más. Ánimos, ¡que te queda nada! ✊
¿Recuerdas lo que comentaba del prefijo de las tablas? ¿No? Pues sube al punto en el que te explico qué es el archivo wp-config.php y vuelve a leerlo.
No importa si tu prefijo es el que hay por defecto «wp_» o uno personalizado para mayor seguridad. Verifica en wp-config que el prefijo que aparece se corresponde.
Tu turno: ¿Conseguiste solucionar «Error establishing a database connection»? ¿Dónde estaba el problema en tu caso? ¿Te ha sido útil este blogpost?
Si has seguido los pasos mostrados, seguro que has podido solucionar el error y ya no verás el puñetero mensaje «Error al establecer una conexión con la base de datos». ¡Felicidades!
9 comentarios en «Error al establecer una conexión con la base de datos»
Hola, no sé como solucionar este problema:
No se puede establecer el enlace a la base de datos: SQLSTATE [HY000] [1045] Acceso denegado para el usuario ‘frigus’ @ ‘localhost’ (usando contraseña: YES)
en la línea 136 en el archivo classes / db / DbPDO.php
131. función pública connect ()
132. {
133. prueba {
134. $ this-> link = $ this-> getPDO ($ this-> server, $ this-> user, $ this-> password, $ this-> database, 5);
135.} catch (PDOException $ e) {
136. throw new PrestaShopException (‘No se puede establecer el enlace a la base de datos:’. $ E-> getMessage ());
137.}
138.
139. $ this-> link-> exec (‘ESTABLECER SESIÓN sql_mode = \’ \ »);
140.
141. return $ este-> enlace;
Gracias y saludos!
Hola Marina! Parece que lo mejor es que lo comentes con tu hosting. El mensaje me indica que es más bien algo de nivel de servidor. Además, no sé porqué leo Prestashop por allí.
Hola, no sé como solucionar este problema:
No se puede establecer el enlace a la base de datos: SQLSTATE [HY000] [1045] Acceso denegado para el usuario ‘frigus’ @ ‘localhost’ (usando contraseña: YES)
en la línea 136 en el archivo classes / db / DbPDO.php
131. función pública connect ()
132. {
133. prueba {
134. $ this-> link = $ this-> getPDO ($ this-> server, $ this-> user, $ this-> password, $ this-> database, 5);
135.} catch (PDOException $ e) {
136. throw new PrestaShopException (‘No se puede establecer el enlace a la base de datos:’. $ E-> getMessage ());
137.}
138.
139. $ this-> link-> exec (‘ESTABLECER SESIÓN sql_mode = \’ \ »);
140.
141. return $ este-> enlace;
Gracias y saludos
Hola,
Disculpa la molestia, me sale el mismo error pero en mi caso al momento de ingresar en Base de Datos MySQL, no encuentra mi BD y no la eliminé. Qué puedo hacer en ese caso?
Saludos.
Hola Omar! No acabo de entender tu problema. De todas formas, si la base de datos se ha evaporado, entonces contacta con tu hosting para que te ayuden con ello. Es el único consejo que se me ocurre 🙂
Buenos días amigo,
Tengo un problema similar con una base de datos en Acces, en la cual al tratar de abrir cualquier modulo me arroja el cuadro: «el formulario esta mal escrito o hace referencia a uno que no existe». Ya he intentado de todo y no me funciona. A raíz de esto me ha tocado hacer doble trabajo ya que no puedo usar la base de datos. Te agradecería tu colaboración.
Saludos.
Hola Mateo!
Siento no poder ayudarte, pues una base de datos en Access no tiene nada que ver con una en WordPress. Deseo puedas solucionar tu error.
Un saludo.
Hola, saludos. Pude solucionar cambiando la contraseña del usuario de la base de datos y agregándola al archivo wp-config.php. Mi problema había surgido tras suspender una cuenta de hosting (soy reseller) durante 2 meses, al activarla nuevamente no establecía conexión con la base de datos. Gracias por el post, súper útil.
Hola Alejandro!
Celebro que hayas podido solucionar el problema y de que el artículo te haya resultado útil ????
Nos vemos!