Cómo solucionar el error de conexión a la base de datos en PrestaShop
¡Hola! Soy tu asistente técnico. Si estás leyendo esto, probablemente tu tienda PrestaShop te ha mostrado un mensaje de error de conexión a la base de datos. No te preocupes, es un problema común y, con esta guía paso a paso, podrás solucionarlo incluso si no eres un experto en sistemas. Vamos a ello.
¿Qué significa este error?
Cuando PrestaShop no puede conectar con la base de datos, tu tienda se vuelve inaccesible. Verás un mensaje como “Error de conexión a la base de datos” o una pantalla en blanco. Esto sucede porque el archivo de configuración de PrestaShop (settings.inc.php) contiene datos incorrectos, o porque el servidor de bases de datos (MySQL/MariaDB) tiene algún problema.
[INFO] La base de datos es el “cerebro” de tu tienda: guarda productos, clientes, pedidos y configuraciones. Sin conexión, PrestaShop no puede funcionar.
Causas más comunes
Antes de lanzarnos a soluciones, identifiquemos qué puede estar fallando. Las causas principales son:
- Credenciales incorrectas en el archivo de configuración (usuario, contraseña, nombre de base de datos o servidor).
- Servicio de base de datos detenido en tu servidor.
- Cambios en el hosting (migración, cambio de contraseñas, etc.).
- Archivo settings.inc.php corrupto o con permisos incorrectos.
- Firewall o reglas de acceso que bloquean la conexión.
- Problemas con el panel de control (como Syspanel, cPanel, etc.).
Solución paso a paso
Voy a guiarte por las soluciones más efectivas, desde lo más simple hasta lo más técnico. Sigue el orden: no te saltes pasos.
1. Verifica el estado del servicio de base de datos
Lo primero es asegurarte de que MySQL/MariaDB esté funcionando. Si usas un panel de control como Syspanel (recuerda que el acceso es por el puerto 2106), puedes hacerlo desde allí.
En Syspanel (HestiaCP):
- Accede a tu panel Syspanel en
https://tu-dominio.com:2106. - Ve a Servicios o Estado del servidor.
- Busca MySQL o MariaDB. Debe aparecer como Activo o Running.
- Si está detenido, haz clic en Iniciar o Reiniciar.
Por línea de comandos (SSH):
Si tienes acceso SSH, ejecuta:
systemctl status mysql
O si usas MariaDB:
systemctl status mariadb
Si no está activo, inícialo con:
systemctl start mysql
Y habilítalo para que arranque automáticamente:
systemctl enable mysql
[TIP] Si no tienes acceso SSH, contacta a tu proveedor de hosting para que verifique el servicio.
2. Revisa el archivo de configuración de PrestaShop
El archivo clave es app/config/parameters.php (en PrestaShop 1.7+) o config/settings.inc.php (en versiones antiguas). Aquí se almacenan los datos de conexión.
Cómo acceder al archivo:
- Usa un cliente FTP (como FileZilla) o el administrador de archivos de Syspanel.
- Navega hasta la raíz de tu tienda PrestaShop.
- Busca el archivo correspondiente.
Qué debes verificar:
Abre el archivo con un editor de texto (nunca con Word o bloc de notas de Windows, usa Notepad++ o similar). Busca estas líneas:
En parameters.php (PrestaShop 1.7+):
'database_host' => 'localhost',
'database_port' => '',
'database_name' => 'nombre_base',
'database_user' => 'usuario_base',
'database_password' => 'contraseña_base',
En settings.inc.php (versiones antiguas):
define('_DB_SERVER_', 'localhost');
define('_DB_NAME_', 'nombre_base');
define('_DB_USER_', 'usuario_base');
define('_DB_PASSWD_', 'contraseña_base');
¿Qué valores deben ser correctos?
- database_host: Normalmente es
localhost. Si tu base de datos está en otro servidor, pon la IP o dominio. - database_name: El nombre exacto de tu base de datos (puedes verlo en Syspanel > Bases de datos).
- database_user: El usuario asociado a esa base de datos.
- database_password: La contraseña de ese usuario.
[WARNING] Si cambiaste la contraseña de la base de datos recientemente, actualízala aquí. Si no la recuerdas, puedes resetearla desde Syspanel.
3. Prueba la conexión manualmente
Para descartar que el problema sea de PrestaShop, prueba conectar a la base de datos desde otra herramienta.
Desde phpMyAdmin (recomendado):
- En Syspanel, busca phpMyAdmin (suele estar en Herramientas o Bases de datos).
- Intenta iniciar sesión con el usuario y contraseña que tienes en el archivo de configuración.
- Si no puedes acceder, las credenciales son incorrectas o la base de datos no existe.
Desde la terminal (SSH):
mysql -u usuario_base -p -h localhost nombre_base
Te pedirá la contraseña. Si ves el prompt mysql>, la conexión funciona. Si sale error, anota el mensaje.
4. Corrige credenciales o restaura desde backup
Si las credenciales son incorrectas, tienes dos opciones:
Opción A: Actualiza el archivo de configuración
- Cambia los valores en
parameters.phposettings.inc.phppor los correctos. - Guarda el archivo y subelo de nuevo al servidor (si lo editaste localmente).
Opción B: Restaura la base de datos desde un backup
Si la base de datos se corrompió o perdiste acceso:
- En Syspanel, ve a Bases de datos y selecciona tu base.
- Busca la opción Restaurar y sube un backup reciente (formato .sql).
- Asegúrate de que el usuario tenga todos los privilegios (SELECT, INSERT, UPDATE, DELETE, CREATE, etc.).
[INFO] Si no tienes backup, puedes intentar reparar la base de datos desde phpMyAdmin: selecciona la base, ve a la pestaña Operaciones y elige Reparar tablas.
5. Verifica permisos del archivo de configuración
El archivo parameters.php o settings.inc.php debe tener permisos de lectura para el usuario del servidor web (normalmente www-data o nobody). Permisos demasiado restrictivos pueden impedir que PrestaShop lo lea.
Cómo cambiarlos:
- Desde FTP: haz clic derecho en el archivo > Permisos (o CHMOD).
- Establece 644 (lectura y escritura para el dueño, solo lectura para grupo y otros).
- Si usas Syspanel, puedes hacerlo desde el administrador de archivos.
6. Comprueba el firewall y las reglas de acceso
A veces el firewall del servidor bloquea conexiones a MySQL (puerto 3306). Si tu base de datos está en otro servidor, asegúrate de que el puerto esté abierto.
En Syspanel:
- Ve a Firewall o Reglas de acceso.
- Asegúrate de que haya una regla que permita tráfico al puerto 3306 desde tu IP o desde el servidor de PrestaShop.
Por línea de comandos (como root):
iptables -L -n | grep 3306
Si ves DROP o no aparece, añade una regla:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
[WARNING] No abras el puerto 3306 a todo el mundo (0.0.0.0/0). Solo a las IPs necesarias por seguridad.
7. Revisa los logs del servidor
Los registros de errores te darán pistas precisas. Busca en:
- Syspanel: Herramientas > Registros del sistema o Error logs.
- SSH:
/var/log/mysql/error.logo/var/log/syslog.
Busca líneas como Access denied for user o Can't connect to MySQL server. El mensaje te indicará qué está mal.
8. Solución avanzada: regenerar el archivo de configuración
Si todo lo anterior falla, puedes forzar a PrestaShop a crear un nuevo archivo de configuración. Pero cuidado: esto borrará la configuración actual y tendrás que reintroducir los datos de la base de datos.
- Conecta por FTP y renombra el archivo
parameters.phpaparameters.php.old(osettings.inc.php). - Accede a tu tienda en el navegador. PrestaShop detectará que falta el archivo y te redirigirá al instalador.
- Sigue los pasos de instalación, pero no crees una nueva base de datos. Selecciona la existente e introduce las credenciales correctas.
- Al finalizar, se generará un nuevo archivo de configuración.
[WARNING] Este método puede causar pérdida de módulos y configuraciones si no tienes cuidado. Úsalo solo como último recurso.
FAQ: Preguntas frecuentes
P: ¿Por qué aparece el error después de migrar mi tienda a otro hosting?
R: Es muy común. Al migrar, cambian las credenciales de la base de datos. Debes actualizar el archivo parameters.php con los nuevos datos. Además, verifica que el nombre del servidor de base de datos sea correcto (a veces es localhost, otras veces una IP).
P: El error dice “Access denied for user”. ¿Qué hago?
R: Significa que el usuario o contraseña son incorrectos. Resetea la contraseña desde Syspanel (Bases de datos > selecciona la base > Cambiar contraseña) y actualiza el archivo de configuración. También asegúrate de que el usuario tenga privilegios sobre la base de datos.
P: ¿Puede ser un problema de PHP?
R: Sí, si la versión de PHP no es compatible con PrestaShop, pueden ocurrir errores extraños. Verifica en Syspanel que uses PHP 7.4 o 8.0 (recomendado para PrestaShop 1.7+). También revisa que la extensión mysqli esté habilitada.
P: No tengo acceso a Syspanel ni a FTP. ¿Qué hago?
R: Contacta a tu proveedor de hosting. Explícales que tu PrestaShop muestra error de conexión a la base de datos y que necesitas que verifiquen el servicio MySQL y te den las credenciales correctas.
P: ¿El error puede ser por un plugin o módulo?
R: Es poco probable, pero posible. Si instalaste un módulo justo antes del error, intenta desactivarlo desde la base de datos (si puedes acceder a phpMyAdmin). Busca la tabla ps_module y cambia active a 0 para ese módulo.
Resumen y recomendaciones finales
Para evitar este error en el futuro:
- Haz backups periódicos de tu base de datos y archivos.
- Anota las credenciales en un lugar seguro.
- Actualiza PrestaShop y sus módulos regularmente.
- Usa contraseñas seguras para la base de datos.
- Si usas Syspanel, recuerda que el acceso es por el puerto 2106 y es una herramienta potente para gestionar tu servidor.
Espero que esta guía te haya sido útil. Si sigues teniendo problemas, no dudes en preguntar a tu hosting o buscar ayuda en foros especializados. ¡Tu tienda volverá a funcionar en poco tiempo!
