Solución: Error de conexión a la base de datos en PrestaShop (DirectAdmin)
¡Hola! Si has llegado hasta aquí, es porque probablemente te has topado con el temido mensaje de "Error de conexión a la base de datos" en tu tienda PrestaShop alojada en un panel de control DirectAdmin. No te preocupes, es uno de los fallos más comunes y, en la gran mayoría de los casos, tiene una solución sencilla que no requiere ser un experto en programación.
En esta guía extensa y paso a paso, vamos a desglosar todas las causas posibles y las soluciones prácticas para que tu tienda vuelva a funcionar en cuestión de minutos. Vamos a ello.
¿Qué significa exactamente "Error de conexión a la base de datos"?
Antes de lanzarnos a arreglar nada, es fundamental entender qué está pasando. PrestaShop necesita dos cosas para funcionar: los archivos del programa (el código) y una base de datos (MySQL) donde guarda tus productos, pedidos, clientes y configuración.
Cuando ves el mensaje de conexión BD fallida PrestaShop, significa que el archivo de configuración de PrestaShop no puede comunicarse con el servidor de bases de datos. Es como si intentaras llamar por teléfono a alguien, pero marcas un número equivocado o la línea está caída.
Las causas más habituales son:
- Credenciales incorrectas: El usuario o la contraseña de la base de datos han cambiado o están mal escritos.
- Servidor de BD caído: El servicio de MySQL no está activo en tu servidor.
- Archivo de configuración corrupto: El archivo
parameters.phptiene datos erróneos o está dañado. - Problemas de permisos: El usuario de la base de datos no tiene permisos para acceder a ella desde el servidor web.
Vamos a diagnosticar y solucionar cada una de ellas.
Preparación: Haz una copia de seguridad ANTES de tocar nada
[WARNING] Este es el paso más importante de toda la guía. Antes de modificar cualquier archivo o base de datos, haz una copia de seguridad completa. Aunque los cambios que vamos a hacer son mínimos, una copia de seguridad te salvará si algo sale mal.
- Copia de seguridad de archivos: Descarga la carpeta completa de tu tienda (normalmente en
public_htmlo un subdirectorio) por FTP o desde el Administrador de Archivos de DirectAdmin. - Copia de seguridad de la BD: Ve a MySQL Management en DirectAdmin y exporta tu base de datos a un archivo
.sql.
Con la copia de seguridad hecha, ya puedes empezar a trabajar con tranquilidad.
Solución 1: Verificar el estado del servidor MySQL en DirectAdmin
El problema puede ser más simple de lo que crees. A veces, el servicio de MySQL se detiene por un reinicio del servidor o por un fallo temporal.
Pasos para comprobar MySQL en DirectAdmin
- Inicia sesión en tu panel de DirectAdmin (normalmente en
https://tudominio.com:2222). - Busca la sección "Información del Sistema" o "Servicios del Sistema". La ubicación exacta puede variar según la versión de DirectAdmin, pero suele estar en el menú lateral o en la pantalla principal.
- Busca en la lista el servicio llamado "MySQL" o "MariaDB".
- Verifica que su estado sea "Ejecutando" (Running) o "Activo" (Active).
Si el estado es "Detenido" (Stopped), haz clic en el botón "Iniciar" (Start) o "Reiniciar" (Restart). Espera unos segundos y vuelve a intentar cargar tu tienda.
[INFO] Si no encuentras la opción de servicios, es posible que tu plan de hosting no te permita gestionarlos. En ese caso, contacta con tu proveedor de alojamiento y pregúntales si el servidor MySQL está activo.
Solución 2: Revisar y arreglar el archivo parameters.php (La causa más común)
Si el servidor MySQL está activo, el siguiente paso es revisar el archivo que contiene las credenciales de acceso. En PrestaShop 1.7 y versiones posteriores, este archivo se llama parameters.php y se encuentra en la carpeta app/config/.
¿Cómo acceder al archivo?
- Conéctate a tu servidor por FTP (usando FileZilla, por ejemplo) o usa el Administrador de Archivos de DirectAdmin.
- Navega hasta la carpeta raíz de tu tienda (normalmente
public_htmlopublic_html/nombre-de-tu-tienda). - Entra en la carpeta
appy luego enconfig. - Busca el archivo
parameters.php. Haz clic derecho y elige "Editar" (si usas el Administrador de Archivos) o descárgalo para editarlo con un editor de texto como Notepad++ o Sublime Text.
¿Qué debo buscar dentro del archivo?
Dentro del archivo, verás un código PHP con una sección que se parece a esta:
'database_host' => 'localhost',
'database_port' => '3306',
'database_name' => 'tu_usuario_tienda',
'database_user' => 'tu_usuario_tienda',
'database_password' => 'TuContraseñaSecreta',
'database_prefix' => 'ps_',
Comprobaciones críticas a realizar:
database_host: En el 99% de los casos en DirectAdmin, esto debe serlocalhosto127.0.0.1. Si ves una IP rara, cámbiala alocalhost.database_name: Este es el nombre de tu base de datos. Debe ser idéntico al que ves en tu panel de DirectAdmin. Normalmente tiene el formatousuario_nombrebd.database_user: El usuario de la base de datos. También debe coincidir exactamente con el de DirectAdmin.database_password: La contraseña. Este es el punto más conflictivo. Si has cambiado la contraseña recientemente desde DirectAdmin, el archivoparameters.phpseguirá teniendo la anterior.
[TIP] Si no estás seguro de tus credenciales, ve a MySQL Management en DirectAdmin. Ahí verás la lista de bases de datos y los usuarios asociados. Puedes usar la opción de "Cambiar contraseña" para establecer una nueva y luego copiarla exactamente en el archivo parameters.php.
¿Cómo guardar los cambios correctamente?
- Realiza los cambios necesarios en el archivo.
- Guarda el archivo con la codificación UTF-8 sin BOM. Esto es crucial, ya que un BOM (Marca de Orden de Bytes) puede causar errores de "headers already sent".
- Sube el archivo modificado a tu servidor, sobrescribiendo el anterior.
[WARNING] Después de modificar el archivo, recuerda borrar la carpeta de caché var/cache (en PrestaShop 1.7) o cache (en PrestaShop 1.6). Puedes borrar todos los archivos dentro, pero no la carpeta en sí. Esto fuerza a PrestaShop a leer la nueva configuración.
Solución 3: Comprobar los permisos del usuario de la base de datos
A veces, las credenciales son correctas, pero el usuario no tiene permiso para conectarse desde el servidor web. Esto es menos común en DirectAdmin, pero puede pasar.
Pasos para verificar permisos en DirectAdmin:
- Ve a MySQL Management.
- Localiza la base de datos que usa tu tienda.
- Haz clic en el icono de "Permisos" o "Privilegios" para ese usuario.
- Asegúrate de que el usuario tenga marcados TODOS los privilegios (SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, etc.). La opción más fácil es marcar "ALL PRIVILEGES" (Todos los privilegios).
Si no estaban marcados, selecciónalos y guarda los cambios.
Solución 4: El problema no está en la configuración, sino en la conexión (Host vs. localhost)
Puede que todo lo anterior esté perfecto, pero el error persista. Esto puede deberse a que tu hosting no permite conexiones externas a la base de datos o el servidor MySQL escucha en un socket específico.
- Prueba con
127.0.0.1: Cambia el valor dedatabase_hostdelocalhosta127.0.0.1. A veces, en servidores con configuraciones IPv6/IPv4, esto resuelve el problema. - Prueba con el puerto: Asegúrate de que
database_portsea3306, que es el puerto por defecto de MySQL. Si tu proveedor usa un puerto diferente, te lo habrá indicado.
Solución 5: Reconstruir el archivo parameters.php desde cero (Método avanzado)
Si has intentado todo y nada funciona, es posible que el archivo parameters.php esté tan corrupto que sea mejor regenerarlo. Esto es un poco más técnico, pero te lo explicamos fácil.
[INFO] Este método es como hacer un "reset" de la configuración de conexión. No afecta a tus productos ni pedidos, solo a la conexión con la BD.
- Renombra el archivo
parameters.phpaparameters.php.bak. Esto lo "desactiva". - Crea un archivo nuevo llamado
parameters.phpcon el siguiente contenido base. Reemplaza los valores entre corchetes con los datos de tu base de datos.
<?php
return array (
'parameters' => array (
'database_host' => 'localhost',
'database_port' => '3306',
'database_name' => 'TU_NOMBRE_BD',
'database_user' => 'TU_USUARIO_BD',
'database_password' => 'TU_CONTRASEÑA_BD',
'database_prefix' => 'ps_',
'database_engine' => 'InnoDB',
'cookie_key' => 'IPzcVqwertyuiopasdfghjklzxcvbnm1234567890',
'cookie_iv' => 'qwertyuiopasdfghjkl',
'new_cookie_key' => 'def00000f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0',
),
);
[WARNING] Los valores de cookie_key, cookie_iv y new_cookie_key son solo ejemplos. Si los cambias, los datos de sesión de tus clientes se invalidarán y tendrán que volver a iniciar sesión. Lo ideal es copiar estos valores del archivo .bak que acabas de renombrar.
- Sube este nuevo archivo a la carpeta
app/config/. - Intenta cargar tu tienda. Si funciona, ¡genial! Si no, el error está en otro sitio.
Solución 6: Verificar el archivo settings.inc.php (Solo para PrestaShop 1.6)
Si tu tienda es de la versión 1.6 o anterior, el archivo de configuración no es parameters.php, sino config/settings.inc.php. El proceso es el mismo que en la Solución 2, pero con este archivo. Busca las mismas variables (database_host, database_name, etc.) y corrígelas.
Solución 7: Contactar con tu proveedor de hosting
Si después de seguir todos estos pasos el error conexión base datos PrestaShop persiste, el problema puede estar en el servidor. Puede haber un firewall bloqueando la conexión, un problema de red interna o un fallo en el servicio de MySQL que no puedes ver desde tu panel.
En ese caso, contacta con el soporte técnico de tu hosting y diles:
- "Tengo un error de conexión a la base de datos en PrestaShop con DirectAdmin."
- "Ya he verificado que MySQL está corriendo y que las credenciales en
parameters.phpson correctas." - "¿Pueden revisar los logs del servidor MySQL para ver si hay algún error de conexión desde la aplicación web?"
Preguntas Frecuentes (FAQ) sobre este error
¿Qué pasa si cambio la contraseña de la base de datos en DirectAdmin?
Si cambias la contraseña, debes actualizarla inmediatamente en el archivo parameters.php (o settings.inc.php). Si no lo haces, tu tienda mostrará el error de conexión a la base de datos.
¿Puedo usar un plugin o módulo para arreglar esto?
No existe un módulo que se ejecute desde el panel de administración, porque si la BD no funciona, PrestaShop no puede cargar. La solución es siempre a nivel de archivos o de panel de control.
¿El error de conexión puede deberse a un ataque de hackeo?
Es posible, aunque menos común. Un atacante podría modificar tu archivo parameters.php para redirigir la tienda a una BD maliciosa. Por eso es importante mantener los archivos de tu tienda actualizados y con contraseñas seguras.
¿Qué es el "database_prefix"?
Es el prefijo que se añade a las tablas de la base de datos. Por defecto es ps_. Si lo cambias, PrestaShop no encontrará las tablas y dará error. Solo cámbialo si sabes exactamente lo que estás haciendo.
¿Y si uso Syspanel en lugar de DirectAdmin?
[INFO] Si tu hosting utiliza el panel Syspanel, el acceso se realiza a través del puerto 2106. Aunque los nombres de las secciones pueden variar ligeramente (por ejemplo, "Bases de Datos" en lugar de "MySQL Management"), el proceso de diagnóstico y solución es exactamente el mismo que hemos descrito aquí. La clave está en localizar la sección de bases de datos y verificar las credenciales y el estado del servicio.
Conclusión: Resumen de la solución
Para arreglar el DirectAdmin PrestaShop error de conexión a la BD, sigue esta checklist:
- Reinicia MySQL desde DirectAdmin si está caído.
- Revisa el archivo
parameters.php(osettings.inc.php) y verifica quedatabase_hosteslocalhost, y que el nombre, usuario y contraseña coinciden con los de MySQL Management. - Comprueba los permisos del usuario de la BD.
- Prueba con
127.0.0.1en lugar delocalhost. - Borra la caché de PrestaShop (
var/cacheocache). - Si todo falla, regenera el archivo
parameters.phpdesde cero. - Si nada funciona, llama a tu soporte de hosting.
Esperamos que esta guía te haya sido de gran ayuda. Recuerda que la paciencia es clave y que, con estos pasos, la gran mayoría de los errores de conexión se resuelven sin perder los datos de tu tienda. ¡Mucha suerte y a vender!
