Cómo solucionar el error 'Can't connect to MySQL server' en PrestaShop
¡Hola! Si estás leyendo esto, es probable que tu tienda PrestaShop esté mostrando un mensaje de error que dice algo como "Cannot connect to MySQL server" o "Error de conexión a la base de datos". No te preocupes, es uno de los errores más comunes y, con la guía adecuada, se soluciona en pocos minutos. Aquí te explicaré paso a paso cómo identificar la causa y aplicar la solución correcta.
Vamos a empezar. Este error significa que PrestaShop no puede comunicarse con el servidor de MySQL donde está almacenada toda la información de tu tienda (productos, pedidos, clientes, etc.). Puede deberse a varias razones: desde un cambio de contraseña hasta un problema de permisos o de configuración del servidor.
¿Qué causa el error "Can't connect to MySQL server" en PrestaShop?
Antes de lanzarnos a soluciones, es importante entender las causas más frecuentes. Esto te ahorrará tiempo y te ayudará a enfocarte en lo correcto.
Causas comunes del error
- Credenciales incorrectas: El archivo de configuración de PrestaShop (
app/config/parameters.php) tiene datos de acceso a la base de datos (usuario, contraseña, nombre de la base, servidor). Si estos datos no coinciden con los reales, aparece el error. - Servidor MySQL caído o no accesible: El servicio de MySQL (a veces llamado MariaDB) puede estar detenido, bloqueado por un firewall o tener un problema de recursos.
- Cambios en el hosting: Si cambiaste de plan de hosting, migraste tu tienda o el proveedor modificó algo en el servidor, es posible que los datos de conexión hayan cambiado.
- Problemas de permisos de usuario: El usuario de MySQL que usa PrestaShop puede no tener permisos para acceder a la base de datos desde la IP o el host donde está el servidor web.
- Archivo de configuración corrupto o mal editado: Si modificaste manualmente el archivo
parameters.phpy cometiste un error (como una coma mal puesta), PrestaShop no podrá leer los datos. - Actualización o módulo conflictivo: Una actualización de PrestaShop, de un módulo o del propio MySQL puede romper la conexión.
Paso 1: Verifica el estado del servidor MySQL
Lo primero es asegurarte de que MySQL esté funcionando. Si no tienes acceso a la terminal, puedes usar el panel de control de tu hosting.
Cómo verificar desde un panel de control común (cPanel, DirectAdmin, Syspanel)
- Accede a tu panel de control. Si usas Syspanel (nuestro sistema de gestión de hosting), la dirección es
https://tudominio.com:2106. Inicia sesión con tus credenciales. - Busca la sección de Servicios o Gestión de servicios. En Syspanel, suele estar en "Servicios" > "Gestión de servicios".
- Busca MySQL o MariaDB. Debería aparecer un indicador verde (activo) o rojo (detenido).
- Si está detenido, haz clic en Iniciar o Reiniciar. Espera unos segundos y vuelve a probar tu tienda.
[TIP]: Si no ves la opción de iniciar servicios, contacta con tu proveedor de hosting. Ellos pueden hacerlo por ti.
Cómo verificar desde la terminal (SSH)
Si tienes acceso SSH, puedes hacerlo rápidamente:
sudo systemctl status mysql
# o si usas MariaDB:
sudo systemctl status mariadb
Si no está activo, inícialo:
sudo systemctl start mysql
# o
sudo systemctl start mariadb
Paso 2: Revisa el archivo de configuración de PrestaShop
Este es el paso más común. El archivo app/config/parameters.php contiene las credenciales. Debes asegurarte de que sean correctas.
Cómo acceder al archivo
- Conéctate a tu servidor mediante FTP o desde el administrador de archivos del panel de control (Syspanel, cPanel, etc.).
- Navega a la carpeta raíz de tu PrestaShop (normalmente
public_htmlowww). - Abre la carpeta
app, luegoconfigy busca el archivoparameters.php.
Qué buscar en el archivo
Dentro del archivo verás algo como esto:
'database_host' => 'localhost',
'database_port' => '3306',
'database_name' => 'nombre_de_tu_base',
'database_user' => 'usuario_de_mysql',
'database_password' => 'contraseña_secreta',
database_host: Normalmente eslocalhost. Si tu base de datos está en otro servidor, debe ser la IP o el nombre del servidor remoto.database_port: Por defecto es3306. Si tu hosting usa un puerto diferente, debe coincidir.database_name: El nombre exacto de la base de datos.database_user: El usuario que tiene acceso a esa base.database_password: La contraseña de ese usuario.
[WARNING]: No uses comillas dobles ni caracteres especiales sin escapar en la contraseña si no estás seguro. Si la contraseña contiene caracteres como $, \ o ', debes escaparlos correctamente (por ejemplo, \' para una comilla simple). Lo más seguro es pedir a tu hosting que te genere una contraseña segura.
Cómo corregir si los datos son incorrectos
- Obtén los datos correctos: Ve a tu panel de control (Syspanel, cPanel, etc.) y busca la sección de Bases de Datos MySQL. Allí verás el nombre de la base, el usuario y la opción de cambiar la contraseña.
- Cambia la contraseña (si es necesario): En Syspanel, ve a "Bases de Datos" > "MySQL", selecciona el usuario y haz clic en "Cambiar contraseña". Anótala.
- Edita el archivo
parameters.php: Con un editor de texto (como Notepad++ o el editor del panel), reemplaza los valores incorrectos por los que acabas de obtener. Guarda el archivo. - Prueba tu tienda: Vuelve a cargar la URL. Si el error persiste, continúa con el siguiente paso.
Paso 3: Verifica los permisos del usuario de MySQL
A veces el usuario tiene la contraseña correcta, pero no tiene permiso para conectarse desde el servidor web.
Cómo otorgar permisos desde la terminal (SSH)
- Accede a MySQL como root:
mysql -u root -p - Ejecuta el siguiente comando para darle todos los privilegios al usuario desde
localhost(ajustausuarioycontraseña):GRANT ALL PRIVILEGES ON nombre_de_tu_base.* TO 'usuario'@'localhost' IDENTIFIED BY 'contraseña'; FLUSH PRIVILEGES; - Sal de MySQL:
EXIT;
Cómo hacerlo desde un panel de control (Syspanel)
- En Syspanel, ve a Bases de Datos > MySQL.
- Busca la base de datos y haz clic en "Administrar" o "Privilegios".
- Asegúrate de que el usuario tenga marcados todos los permisos (SELECT, INSERT, UPDATE, DELETE, etc.). Si no, selecciona "Todos" y guarda.
Paso 4: Comprueba el firewall y la conectividad de red
Si tu base de datos está en un servidor diferente al de tu web, puede que el firewall esté bloqueando el puerto 3306.
Cómo verificar desde tu ordenador
- Abre una terminal (CMD en Windows, Terminal en Mac/Linux).
- Ejecuta:
telnet IP_DEL_SERVIDOR_MYSQL 3306(reemplaza por la IP real). - Si ves un mensaje de "conexión rechazada" o "timeout", el firewall está bloqueando. Si ves una pantalla en blanco o un mensaje de MySQL, la conexión está bien.
Cómo solucionar el bloqueo
- En tu hosting (Syspanel): Ve a Seguridad > Firewall y asegúrate de que el puerto 3306 esté abierto para la IP de tu servidor web (o para todas las IPs si es necesario, aunque no es recomendable).
- En un VPS o servidor dedicado: Usa comandos como
sudo ufw allow 3306(si usas UFW) osudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT.
Paso 5: Revisa la versión de PHP y los módulos de MySQL
PrestaShop necesita que PHP tenga habilitada la extensión mysqli o pdo_mysql. Si falta, no podrá conectar.
Cómo verificar desde el panel de control
- En Syspanel, ve a Software > Seleccionar versión de PHP.
- Busca las extensiones mysqli y pdo_mysql. Deben estar marcadas (activadas).
- Si no lo están, actívalas y guarda los cambios.
Cómo verificar desde un archivo PHP
Crea un archivo info.php en la raíz de tu web con este contenido:
<?php phpinfo(); ?>
Ábrelo en el navegador (ej: tudominio.com/info.php). Busca la sección "mysqli" o "pdo_mysql". Si no aparecen, la extensión no está instalada. Contacta a tu hosting para que la activen.
[INFO]: No olvides eliminar el archivo info.php después de la comprobación por seguridad.
Paso 6: Soluciona problemas de caché y sesiones
A veces el error es temporal y se debe a un bloqueo en la caché de PrestaShop o en las sesiones de MySQL.
Cómo limpiar la caché de PrestaShop
- Si puedes acceder al back office: Ve a Parámetros de la tienda > Rendimiento > Limpiar caché.
- Si no puedes acceder: Desde FTP, elimina manualmente el contenido de la carpeta
/var/cache/(dentro de la raíz de PrestaShop). También puedes eliminar la carpeta/cache/smarty/cache/y/cache/smarty/compile/.
Cómo reiniciar las sesiones de MySQL
Si el error dice "Too many connections" o "Connection refused", puede que el límite de conexiones esté agotado. En la terminal:
sudo systemctl restart mysql
# o
sudo systemctl restart mariadb
Esto cerrará todas las conexiones y las reiniciará.
Paso 7: Verifica la integridad de la base de datos
Si la base de datos está corrupta, puede dar errores de conexión. Puedes repararla desde la terminal o desde un panel.
Desde la terminal (SSH)
mysqlcheck -u root -p --auto-repair --all-databases
Desde Syspanel
- Ve a Bases de Datos > phpMyAdmin.
- Selecciona la base de datos de tu PrestaShop.
- En la pestaña Marcar todo, elige Reparar tabla en el menú desplegable.
Paso 8: Revisa los logs de error
Los logs de MySQL y de PHP pueden darte pistas precisas.
Dónde encontrar los logs
- MySQL: Normalmente en
/var/log/mysql/error.logo/var/log/mariadb/error.log. En Syspanel, puedes verlos en Herramientas > Logs del sistema. - PHP: En
/var/log/php_errors.logo en el panel de control en Logs de errores.
Busca líneas que contengan "Can't connect", "Access denied" o "Connection refused".
Preguntas frecuentes (FAQ)
¿Qué hago si después de todo el error persiste?
Si has seguido todos los pasos y nada funciona, es posible que haya un problema más profundo en el servidor. Contacta con tu proveedor de hosting y diles que has verificado credenciales, permisos y servicios. Ellos podrán revisar los logs del servidor.
¿Puedo perder datos si modifico el archivo parameters.php?
No, solo perderás el acceso a la tienda si los datos son incorrectos. Siempre puedes volver a cambiarlos. Asegúrate de hacer una copia de seguridad del archivo antes de editarlo.
¿El error puede deberse a un ataque?
Sí, aunque es menos común. Un ataque de fuerza bruta puede saturar las conexiones de MySQL. Si ves muchos intentos de conexión en los logs, cambia la contraseña de la base de datos y del usuario de FTP inmediatamente.
¿Cómo evito que esto vuelva a pasar?
- Usa contraseñas seguras y cámbialas periódicamente.
- Mantén PrestaShop y sus módulos actualizados.
- Realiza copias de seguridad periódicas de la base de datos y los archivos.
- Configura alertas en tu hosting para que te avisen si un servicio se cae.
[WARNING]: Si tu hosting usa Syspanel, recuerda que el acceso al panel es a través del puerto 2106. No compartas tus credenciales con nadie.
Conclusión
El error "Can't connect to MySQL server" en PrestaShop es frustrante, pero casi siempre tiene solución. Siguiendo esta guía paso a paso, desde verificar el servicio hasta revisar permisos y logs, podrás recuperar tu tienda en poco tiempo. Recuerda que la paciencia y el método son clave. Si no te sientes cómodo realizando algunos pasos, no dudes en pedir ayuda a tu proveedor de hosting o a un técnico especializado.
¡Espero que este artículo te haya sido de gran ayuda! Si tienes alguna otra duda, déjala en los comentarios o contacta con nuestro soporte. ¡Buena suerte con tu tienda PrestaShop!
