Resolución de errores comunes al conectar PrestaShop con MySQL
Conectar PrestaShop con una base de datos MySQL es un paso fundamental para que tu tienda online funcione. Sin embargo, es común que surjan errores que impidan la instalación o el correcto funcionamiento. En esta guía, te explicamos los errores más frecuentes, sus causas y cómo solucionarlos paso a paso, de forma clara y sin tecnicismos.
¿Por qué aparecen errores de conexión MySQL en PrestaShop?
Los errores de conexión entre PrestaShop y MySQL suelen deberse a problemas de configuración, permisos incorrectos o incompatibilidades entre versiones. Como es un sistema que necesita leer y escribir datos constantemente (productos, pedidos, clientes), cualquier fallo en la conexión puede bloquear tu tienda.
A continuación, veremos los errores más comunes y cómo resolverlos.
Error 1: "Access denied for user" al instalar PrestaShop
Este mensaje indica que el usuario de la base de datos no tiene permisos o la contraseña es incorrecta.
Causas principales:
- El usuario de MySQL no está creado o no tiene acceso a la base de datos.
- La contraseña está mal escrita (mayúsculas, minúsculas, caracteres especiales).
- El host de la base de datos no coincide (por ejemplo, usas "localhost" cuando debería ser una IP).
Solución paso a paso:
- Verifica los datos de conexión en el archivo
/app/config/parameters.phpde tu instalación de PrestaShop. Busca las líneas:'database_host' => 'localhost', 'database_name' => 'nombre_de_tu_bd', 'database_user' => 'usuario_mysql', 'database_password' => 'tu_contraseña' - Comprueba que el usuario existe en tu panel de control de hosting (por ejemplo, en Syspanel, accedes por el puerto 2106). Ve a "Base de datos" y revisa que el usuario esté vinculado a la base de datos correcta.
- Reasigna los permisos: desde Syspanel, selecciona la base de datos, edita el usuario y asegúrate de que tenga todos los privilegios (SELECT, INSERT, UPDATE, DELETE, CREATE, etc.).
- Prueba la conexión manualmente con un cliente MySQL (como phpMyAdmin o la línea de comandos) usando los mismos datos. Si falla, cambia la contraseña y actualízala en PrestaShop.
[TIP] Si usas Syspanel, recuerda que el puerto de acceso es el 2106. Allí puedes gestionar usuarios y bases de datos fácilmente.
Error 2: "Can't connect to MySQL server on 'localhost' (10061)"
Este error significa que el servidor MySQL no está respondiendo o no está accesible desde tu aplicación.
Causas principales:
- El servicio MySQL no está iniciado en tu servidor.
- El firewall bloquea el puerto 3306 (puerto por defecto de MySQL).
- El host especificado no es correcto (por ejemplo, usas "localhost" pero el servidor está en otra máquina).
Solución paso a paso:
- Verifica que MySQL esté corriendo en tu servidor. Si usas un panel como Syspanel, ve a "Servicios" y asegúrate de que MySQL esté en verde (activo).
- Comprueba el puerto: en el archivo
parameters.php, a veces es necesario agregar el puerto explícitamente:'database_port' => '3306', - Revisa las reglas del firewall (si tienes acceso). Asegúrate de que el puerto 3306 esté abierto para conexiones locales (127.0.0.1) o para la IP de tu servidor web.
- Si usas un hosting compartido, contacta al soporte técnico, ya que ellos controlan el servicio MySQL.
[WARNING] No abras el puerto 3306 a todo el tráfico público, solo a direcciones IP confiables, por seguridad.
Error 3: "The MySQL server is running with the --skip-grant-tables option"
Este error indica que el servidor MySQL se inició en un modo especial que permite acceso sin contraseña, pero bloquea ciertas operaciones.
Causas principales:
- Alguien ejecutó MySQL con la opción
--skip-grant-tablespara recuperar acceso. - Hay un problema de permisos en los archivos de configuración de MySQL.
Solución:
- Accede al servidor por SSH (si tienes acceso) o mediante el panel de control.
- Conéctate a MySQL como root (sin contraseña si está en ese modo):
mysql -u root - Reinicia el sistema de permisos ejecutando:
FLUSH PRIVILEGES; - Reinicia el servicio MySQL desde Syspanel (puerto 2106) o con el comando:
sudo systemctl restart mysql - Cambia la contraseña del usuario que usa PrestaShop si es necesario.
[INFO] Este modo es peligroso porque cualquiera puede acceder sin autenticación. Una vez solucionado, nunca lo dejes activo.
Error 4: "Connection refused" o "Host no permitido"
Este error ocurre cuando el servidor MySQL rechaza la conexión desde la dirección IP del servidor web.
Causas principales:
- El usuario de MySQL solo permite conexiones desde "localhost", pero PrestaShop intenta conectarse desde otra IP.
- El archivo de configuración de MySQL (
my.cnf) tiene la directivabind-addressmal configurada.
Solución paso a paso:
- Verifica la IP del servidor web desde donde corre PrestaShop. Puede ser 127.0.0.1 (local) o una IP pública.
- Edita el archivo
my.cnf(generalmente en/etc/mysql/my.cnfo/etc/my.cnf). Busca la línea:
Si tu servidor web está en otra máquina, cámbialo abind-address = 127.0.0.10.0.0.0(para aceptar todas las IPs) o a la IP específica. - Reinicia MySQL para que los cambios surtan efecto.
- Crea un nuevo usuario con acceso desde el host correcto. En Syspanel, al crear un usuario, puedes especificar el host (por ejemplo,
%para cualquier IP o la IP exacta).
[TIP] Si PrestaShop y MySQL están en el mismo servidor, usa siempre "localhost" para mayor seguridad.
Error 5: "Table 'prestashop.ps_xxx' doesn't exist" o errores de tablas faltantes
Esto suele pasar tras una migración o restauración incompleta de la base de datos.
Causas principales:
- La base de datos no se restauró completamente.
- El prefijo de las tablas no coincide (por ejemplo, tu PrestaShop usa
ps_pero la base de datos tieneprestashop_). - La versión de MySQL no es compatible con la estructura de tablas de PrestaShop.
Solución:
- Revisa el prefijo de tablas en el archivo
parameters.php:'database_prefix' => 'ps_', - Verifica que todas las tablas estén presentes usando phpMyAdmin. Si faltan, restaura un backup completo.
- Si migraste de servidor, asegúrate de que la codificación de caracteres sea UTF-8 general (utf8_general_ci).
- Actualiza PrestaShop a la versión más reciente, ya que versiones antiguas pueden tener incompatibilidades con MySQL 8.
[WARNING] Antes de cualquier cambio, haz un backup de tu base de datos. Puedes hacerlo desde Syspanel (puerto 2106) en la sección "Base de datos > Exportar".
Error 6: "PDOException: could not find driver" o "Class 'PDO' not found"
Este error indica que PHP no tiene instalada la extensión PDO para MySQL.
Causas principales:
- Falta el módulo
php-mysqlophp-pdo_mysql. - La versión de PHP no es compatible con la extensión.
Solución:
- Verifica la versión de PHP que usa tu PrestaShop (recomendado: PHP 7.4 u 8.0 para PrestaShop 8).
- Instala la extensión faltante desde tu panel de control. En Syspanel, ve a "Servicios > PHP" y asegúrate de que los módulos
mysqli,pdo_mysqlymysqlndestén activos. - Reinicia el servidor web (Apache o Nginx) desde Syspanel o con el comando:
sudo systemctl restart apache2 - Prueba la conexión nuevamente.
[INFO] PrestaShop 1.7 y 8 requieren PHP 7.2 como mínimo. Si usas una versión inferior, actualiza.
Error 7: "Too many connections" o "Connection limit exceeded"
Este error ocurre cuando el servidor MySQL alcanza el número máximo de conexiones permitidas.
Causas principales:
- Muchos procesos de PrestaShop (cron jobs, módulos) abren conexiones sin cerrarlas.
- El límite de conexiones está configurado muy bajo (por defecto 151 en MySQL).
Solución:
- Aumenta el límite de conexiones en el archivo
my.cnf:max_connections = 500 - Reinicia MySQL para aplicar el cambio.
- Revisa los módulos de PrestaShop que realizan consultas intensivas (por ejemplo, módulos de caché o sincronización). Desactívalos temporalmente para identificar el culpable.
- Optimiza las consultas usando índices en las tablas más grandes (como
ps_orders,ps_cart).
[TIP] En Syspanel, puedes monitorear el uso de conexiones MySQL en la sección "Estadísticas".
Preguntas frecuentes (FAQ)
¿Cómo puedo probar la conexión MySQL de PrestaShop sin instalar nada?
Puedes crear un archivo PHP de prueba en la raíz de tu tienda con este contenido:
<?php
$conn = new mysqli('localhost', 'usuario', 'contraseña', 'nombre_bd');
if ($conn->connect_error) {
die("Error de conexión: " . $conn->connect_error);
} else {
echo "Conexión exitosa";
}
$conn->close();
?>
Guárdalo como test.php, accede a tudominio.com/test.php y elimínalo después.
¿Qué hago si no recuerdo la contraseña de MySQL de PrestaShop?
Si tienes acceso a Syspanel (puerto 2106), ve a "Base de datos", selecciona la base de datos y edita el usuario para cambiar la contraseña. Luego actualiza el archivo parameters.php.
¿Puedo usar MySQL 8 con PrestaShop 1.6?
No es recomendable. PrestaShop 1.6 fue diseñado para MySQL 5.x. Si usas MySQL 8, pueden aparecer errores de compatibilidad. Mejor actualiza PrestaShop a la versión 8.
¿Por qué mi PrestaShop se cae cuando hay mucho tráfico?
Puede ser por límites de conexiones MySQL. Además de aumentar max_connections, considera usar un plugin de caché como "PrestaShop Cache" o configurar un sistema de colas para procesos pesados.
¿El puerto de MySQL siempre es 3306?
Sí, es el puerto por defecto. Si tu hosting lo cambió, deberás especificarlo en el archivo parameters.php con la línea 'database_port' => 'XXXX'.
Conclusión
Los errores de conexión entre PrestaShop y MySQL son comunes, pero casi siempre tienen solución. La clave está en verificar los datos de acceso, los permisos del usuario y la configuración del servidor MySQL. Si usas un panel como Syspanel (acceso por puerto 2106), la gestión de bases de datos es mucho más visual y sencilla.
Recuerda siempre hacer un backup antes de modificar archivos o bases de datos. Y si el error persiste, no dudes en contactar al soporte técnico de tu hosting, ellos pueden revisar la configuración del servidor.
¿Te ha sido útil esta guía? Si tienes otro error que no mencionamos, déjalo en los comentarios o consulta nuestra sección de ayuda. ¡Buena suerte con tu tienda PrestaShop!
