PrestaShop: Solucionar error de conexión a la base de datos
Es muy frustrante encontrarse con un error de base de datos en PrestaShop. De repente, tu tienda online deja de funcionar y ves un mensaje como "Error de conexión a la base de datos" o "Link to database cannot be established". No te preocupes, es uno de los problemas más comunes en entornos Linux y, por suerte, tiene solución. En esta SysAdmin PrestaShop guía completa, vamos a desglosar paso a paso cómo diagnosticar y solucionar este error, tanto si tienes acceso al panel de control como si solo dispones de acceso por terminal.
Vamos a empezar desde lo más básico para que cualquier persona, incluso sin experiencia técnica, pueda seguir los pasos.
¿Por qué aparece el error de conexión a la base de datos en PrestaShop?
El error de conexión a la base de datos en PrestaShop se produce cuando el sistema no puede comunicarse con MySQL o MariaDB. Las causas más frecuentes son:
- Credenciales incorrectas en el archivo de configuración
app/config/parameters.php. - El servicio de base de datos no está funcionando (caído o detenido).
- El servidor de base de datos ha cambiado de IP o puerto.
- La base de datos ha sido eliminada o su nombre ha cambiado.
- Problemas de permisos en los archivos de configuración.
- El usuario de la base de datos no tiene los privilegios necesarios.
- El servidor está sobrecargado o tiene un límite de conexiones alcanzado.
Cada una de estas causas tiene una solución específica que veremos a continuación.
Requisitos previos antes de empezar
Antes de lanzarte a modificar archivos, asegúrate de tener:
- Acceso al panel de control de tu hosting (cPanel, Syspanel, Plesk, etc.). Si usas Syspanel (el antiguo HestiaCP), recuerda que el puerto de acceso es el 2106 (ejemplo:
tudominio.com:2106). - Acceso SSH al servidor (opcional pero muy recomendable para soluciones avanzadas).
- Credenciales de la base de datos (usuario, contraseña, nombre de la BD y host).
- Una copia de seguridad reciente de tu tienda y de la base de datos. ¡Esto es crítico!
[WARNING] Antes de hacer cualquier cambio, haz siempre una copia de seguridad. Un error en la configuración puede dejar tu tienda completamente inaccesible.
Paso 1: Verificar el estado del servicio de base de datos
Lo primero es comprobar si MySQL/MariaDB está funcionando. Si el servicio está caído, ninguna aplicación podrá conectarse.
Desde un panel de control (Syspanel, cPanel, etc.)
- Accede a tu panel de control. Por ejemplo, para Syspanel, escribe en tu navegador
tudominio.com:2106e inicia sesión. - Busca la sección de Servicios o Servidores.
- Localiza el servicio MySQL o MariaDB.
- Si aparece como detenido o inactivo, haz clic en Iniciar o Reiniciar.
Desde la terminal (SSH)
Conéctate por SSH a tu servidor y ejecuta:
sudo systemctl status mysql
O, si tu servidor usa MariaDB:
sudo systemctl status mariadb
Si el servicio no está activo, inícialo con:
sudo systemctl start mysql
Y habilítalo para que arranque automáticamente:
sudo systemctl enable mysql
[TIP] Si no tienes permisos sudo, contacta con tu proveedor de hosting para que reinicien el servicio.
Paso 2: Revisar las credenciales en el archivo de configuración de PrestaShop
PrestaShop guarda los datos de conexión a la base de datos en el archivo app/config/parameters.php. Si estos datos son incorrectos, obtendrás el error.
¿Cómo localizar el archivo?
Usando un cliente FTP (como FileZilla) o el administrador de archivos de tu panel, navega hasta la carpeta raíz de tu tienda PrestaShop. Normalmente es public_html o www. Dentro, busca la carpeta app/config/ y abre el archivo parameters.php.
¿Qué buscar?
Dentro del archivo verás algo como esto:
'database_host' => 'localhost',
'database_port' => '3306',
'database_name' => 'nombre_de_tu_bd',
'database_user' => 'usuario_bd',
'database_password' => 'contraseña_bd',
Comprueba que estos valores coincidan exactamente con los datos de tu base de datos. Errores comunes:
- database_host: a veces no es
localhost, sino una IP como127.0.0.1o un nombre de servidor remoto. - database_port: el puerto por defecto es
3306, pero puede haber sido cambiado por seguridad. - database_name, database_user y database_password: asegúrate de que no tengan espacios adicionales ni caracteres escapados incorrectamente.
¿Cómo obtener las credenciales correctas?
Desde tu panel de control:
- Syspanel: Ve a Base de Datos y allí verás el nombre de la BD, el usuario y la opción de cambiar la contraseña.
- cPanel: Busca Bases de Datos MySQL y allí encontrarás toda la información.
Si has cambiado la contraseña recientemente, actualízala también en el archivo parameters.php.
[INFO] Si editas el archivo manualmente, asegúrate de que los valores estén entre comillas simples y que no haya errores de sintaxis PHP.
Paso 3: Probar la conexión manualmente desde la terminal
Si tienes acceso SSH, puedes probar la conexión directamente con el cliente de MySQL. Esto te ayudará a saber si el problema está en PrestaShop o en la propia base de datos.
Ejecuta:
mysql -u usuario_bd -p -h localhost nombre_de_tu_bd
Te pedirá la contraseña. Si la conexión es exitosa, verás el prompt de MySQL. Si falla, el mensaje de error te dará pistas:
- "Access denied for user": Contraseña o usuario incorrectos.
- "Unknown database": El nombre de la base de datos no existe.
- "Can't connect to MySQL server": El servicio no está corriendo o el host es incorrecto.
[WARNING] Si la conexión desde la terminal funciona pero PrestaShop sigue dando error, el problema está en el archivo
parameters.phpo en los permisos del usuario.
Paso 4: Verificar los privilegios del usuario de la base de datos
A veces el usuario existe y la contraseña es correcta, pero no tiene permisos suficientes para acceder desde el host donde está alojado PrestaShop.
Desde la terminal de MySQL (una vez conectado como root o con un usuario con privilegios), ejecuta:
SHOW GRANTS FOR 'usuario_bd'@'localhost';
Si ves que faltan permisos, puedes otorgarlos con:
GRANT ALL PRIVILEGES ON nombre_de_tu_bd.* TO 'usuario_bd'@'localhost' IDENTIFIED BY 'contraseña_bd';
FLUSH PRIVILEGES;
Si PrestaShop está en un servidor diferente al de la base de datos, el host no será localhost sino la IP del servidor web. En ese caso, cambia 'localhost' por 'ip_del_servidor_web' o usa '%' (no recomendado por seguridad).
Paso 5: Comprobar el archivo de configuración de la base de datos (config/settings.inc.php)
En versiones antiguas de PrestaShop (1.6 y anteriores), la configuración estaba en el archivo config/settings.inc.php. Aunque las versiones modernas usan parameters.php, a veces este archivo antiguo sigue existiendo y puede interferir.
Localiza el archivo config/settings.inc.php en la raíz de tu tienda. Si existe, ábrelo y verifica que los datos sean los mismos que en parameters.php. Si no lo necesitas, puedes renombrarlo a settings.inc.php.bak para desactivarlo.
[TIP] Si tu tienda es muy antigua y aún usa
settings.inc.php, ese es el archivo que debes modificar.
Paso 6: Verificar el límite de conexiones a la base de datos
En servidores compartidos, es común alcanzar el límite máximo de conexiones simultáneas. Si esto ocurre, las nuevas conexiones (como las de PrestaShop) serán rechazadas.
¿Cómo comprobarlo?
Desde la terminal de MySQL:
SHOW VARIABLES LIKE 'max_connections';
Si el valor es muy bajo (por ejemplo, 10 o 20), puedes aumentarlo (si tienes permisos) con:
SET GLOBAL max_connections = 100;
Pero este cambio no es persistente. Para hacerlo permanente, edita el archivo de configuración de MySQL (/etc/mysql/my.cnf o /etc/my.cnf) y añade o modifica:
max_connections = 100
Luego reinicia el servicio:
sudo systemctl restart mysql
[WARNING] En hosting compartido, no podrás cambiar este valor. Contacta con tu proveedor.
Paso 7: Solucionar problemas de permisos en los archivos de configuración
Si el archivo parameters.php no tiene los permisos correctos, PrestaShop no podrá leerlo o escribirlo. Los permisos recomendados son:
- Archivos: 644
- Carpetas: 755
Puedes cambiarlos desde el panel de control o con comandos SSH:
chmod 644 app/config/parameters.php
chmod 755 app/config/
[INFO] Nunca pongas permisos 777, ya que es un riesgo de seguridad.
Paso 8: Forzar la regeneración de la configuración desde la terminal
Si has modificado el archivo parameters.php pero el error persiste, puedes intentar forzar a PrestaShop a regenerar la configuración. Esto es útil si el archivo está corrupto.
- Conéctate por SSH a tu servidor.
- Navega a la carpeta raíz de PrestaShop.
- Ejecuta:
php bin/console doctrine:database:create --if-not-exists
Este comando intentará crear la base de datos si no existe y actualizará la configuración.
Si el comando falla, puedes probar a eliminar el archivo parameters.php y luego acceder a la URL de instalación de PrestaShop (por ejemplo, tudominio.com/install) para que el instalador te guíe en la configuración de la base de datos.
[WARNING] Eliminar
parameters.phppuede causar que PrestaShop entre en modo de instalación. Si no quieres reinstalar, mejor haz una copia de seguridad antes.
Paso 9: Verificar que el nombre de la base de datos no haya cambiado
A veces, al migrar de servidor o al restaurar una copia de seguridad, el nombre de la base de datos cambia. Revisa en tu panel de control que la base de datos exista y que su nombre coincida exactamente con el que tienes en parameters.php.
Si la base de datos no existe, créala con el mismo nombre y mismo juego de caracteres (normalmente utf8_general_ci o utf8mb4_general_ci).
Paso 10: Comprobar el estado de los logs de MySQL
Los logs de MySQL pueden darte pistas muy precisas sobre el error. Si tienes acceso a los logs, búscalos en:
/var/log/mysql/error.log/var/log/mariadb/mariadb.log
Ejecuta:
sudo tail -100 /var/log/mysql/error.log
Busca líneas con errores como:
- "Access denied for user"
- "Can't connect to MySQL server"
- "Too many connections"
Cada uno de estos errores te llevará a la solución correspondiente.
FAQ: Preguntas frecuentes sobre el error de conexión a la base de datos en PrestaShop
1. ¿Qué hago si no recuerdo la contraseña de la base de datos?
Desde tu panel de control, puedes cambiar la contraseña. En Syspanel, ve a Base de Datos, selecciona el usuario y haz clic en Cambiar contraseña. Luego actualiza el archivo parameters.php con la nueva contraseña.
2. ¿El error puede deberse a un plugin o módulo?
Sí, algunos módulos mal configurados pueden sobrescribir la conexión a la base de datos. Prueba a desactivar todos los módulos no esenciales renombrando la carpeta modules (por ejemplo, a modules_backup). Si el error desaparece, ve activándolos uno por uno para identificar al culpable.
3. ¿Puedo solucionar el error sin acceso al panel de control?
Sí, si tienes acceso SSH y permisos de superusuario, puedes editar los archivos de configuración directamente y reiniciar servicios. Si no, contacta con tu proveedor de hosting.
4. ¿Por qué aparece el error después de una actualización de PrestaShop?
Las actualizaciones pueden cambiar la estructura de la base de datos o los archivos de configuración. Asegúrate de que la versión de PHP sea compatible y de que los archivos de configuración se hayan actualizado correctamente.
5. ¿El error de conexión afecta al SEO de mi tienda?
Sí, mientras la tienda esté caída, los motores de búsqueda no podrán indexar tu contenido y los usuarios no podrán comprar. Esto puede afectar negativamente tu posicionamiento. Por eso es importante solucionarlo cuanto antes.
6. ¿Qué hago si después de todo el error persiste?
Si has seguido todos los pasos y el error continúa, puede tratarse de un problema más profundo, como corrupción de la base de datos o un error del servidor. Te recomiendo:
- Restaurar una copia de seguridad de la base de datos.
- Contactar con el soporte técnico de tu hosting.
- Buscar ayuda en foros especializados como PrestaShop Forums.
Conclusión
El PrestaShop error base de datos es un problema común pero completamente solucionable. Como has visto, la clave está en verificar el estado del servicio, las credenciales y los permisos. Recuerda siempre tener una copia de seguridad y, si usas Syspanel, acceder por el puerto 2106 para gestionar tus bases de datos.
Con esta SysAdmin PrestaShop guía, espero que hayas podido restaurar la conexión base datos PrestaShop y que tu tienda vuelva a funcionar sin problemas. Si te ha sido útil, compártela con otros administradores que puedan estar pasando por la misma situación.
¡Buena suerte y que tus ventas online no se detengan!
