Solución al error 'Cannot connect to the database' en PrestaShop con DirectAdmin
¡Hola! Si has llegado hasta aquí, probablemente te has encontrado con uno de los errores más temidos por cualquier dueño de una tienda online: el temido "Cannot connect to the database" en tu PrestaShop alojado en un servidor con panel de control DirectAdmin.
No te preocupes, respira. Este error es mucho más común de lo que parece y, en la gran mayoría de los casos, tiene una solución sencilla que puedes aplicar tú mismo sin necesidad de ser un gurú de la programación. En esta guía extensa y paso a paso, vamos a desglosar todas las causas posibles y, lo más importante, cómo solucionarlas de forma definitiva.
Vamos a ello. Considera este artículo tu manual de primeros auxilios para el error base de datos PrestaShop DirectAdmin.
¿Qué significa exactamente este error?
Antes de ponernos manos a la obra, es vital entender qué está pasando. PrestaShop es un software que necesita dos cosas para funcionar: los archivos (el código de la tienda) y una base de datos (donde se guardan tus productos, clientes, pedidos, etc.).
Cuando ves el mensaje PrestaShop cannot connect database DirectAdmin, significa que PrestaShop ha intentado hablar con tu base de datos MySQL y esta ha dicho "no, no te conozco" o "no tengo ganas de hablar ahora". Es como si intentaras abrir tu casa con la llave equivocada o si la cerradura hubiera cambiado.
Este problema puede aparecer de repente (un día todo funciona y al siguiente sale el error) o justo después de mover tu tienda a un nuevo servidor. Vamos a ver las causas más frecuentes y sus soluciones.
Causa 1: Credenciales incorrectas en el archivo de configuración (La más común)
Esta es, con diferencia, la razón número uno por la que se produce el error base de datos PrestaShop DirectAdmin. O bien las credenciales (usuario, contraseña o nombre de la base de datos) han cambiado, o fueron escritas mal durante la instalación o migración.
PrestaShop guarda estos datos en un archivo llamado parameters.php (en versiones modernas) o settings.inc.php (en versiones antiguas). Si los datos de este archivo no coinciden exactamente con los que creaste en DirectAdmin, la conexión fallará.
¿Cómo solucionarlo?
- Accede a tu panel de DirectAdmin: Inicia sesión en tu panel de control. La URL suele ser algo como
https://tudominio.com:2222. - Abre el Administrador de Archivos: Busca el icono "Administrador de Archivos" o "File Manager" dentro de DirectAdmin.
- Navega a la carpeta de tu tienda: Ve a la carpeta
public_htmlodomains/tudominio.com/public_htmldonde está instalada tu tienda PrestaShop. - Encuentra el archivo de configuración:
- Si tienes PrestaShop 1.7 o 8.x, busca la carpeta
app/config/y dentro de ella el archivoparameters.php. - Si tienes PrestaShop 1.6 o anterior, busca el archivo
config/settings.inc.php.
- Si tienes PrestaShop 1.7 o 8.x, busca la carpeta
- Edita el archivo: Haz clic derecho sobre el archivo y selecciona "Editar" o "Edit". Busca las líneas que contienen
database_host,database_name,database_userydatabase_password.
Aquí es donde debes verificar que los valores son exactamente los mismos que tienes en DirectAdmin. Mucha gente se confunde con el prefijo. En DirectAdmin, cuando creas una base de datos, el nombre y el usuario suelen llevar un prefijo que es tu nombre de usuario de hosting.
- Ejemplo: Si tu usuario de hosting es
usuario1y creas una BD llamadamitienda, el nombre real de la base de datos seráusuario1_mitienda. Lo mismo aplica para el usuario:usuario1_miusuario.
[WARNING]
¡Ojo con las contraseñas! Si has usado caracteres especiales como$,#o"en tu contraseña de base de datos, el archivoparameters.phppuede interpretarlos mal. Asegúrate de que la contraseña esté entre comillas simples y que si contiene un carácter especial, esté bien escapado. Si tienes dudas, lo más fácil es cambiar la contraseña de la BD desde DirectAdmin y poner una simple con letras y números.
Solución práctica: Si no estás seguro de si los datos son correctos, ve a DirectAdmin > "Administrador de bases de datos MySQL" y copia manualmente los nombres y usuarios. Para la contraseña, puedes resetearla y actualizarla en el archivo de configuración.
Causa 2: El servicio de MySQL está caído o saturado
DirectAdmin gestiona el servidor web y también el servicio de bases de datos (MySQL/MariaDB). A veces, este servicio se detiene por un reinicio del servidor, un fallo o una sobrecarga de memoria. Si el servicio no está activo, ningún sitio web en ese servidor podría conectar con su BD, no solo el tuyo.
¿Cómo solucionarlo?
- Revisa otros sitios web: Si tienes otros sitios en el mismo hosting, comprueba si también dan el error. Si es así, el problema es global del servidor.
- Reinicia el servicio desde DirectAdmin: Accede a tu panel de DirectAdmin. Busca la sección "Servicios" o "System Services". Encontrarás una lista de servicios como HTTP, FTP, MySQL, etc.
- Localiza MySQL o MariaDB: Busca en la lista el servicio llamado
mysqlomariadb. - Reinícialo: Haz clic en el icono de "Reiniciar" (suele ser un círculo con una flecha). Dale unos segundos para que se reinicie por completo.
[TIP]
A veces, el servicio no está caído, pero sí bloqueado por muchas conexiones. Si el reinicio no funciona, espera 5 minutos y vuelve a intentarlo. La saturación puede ser temporal.
Si no tienes acceso a la sección de servicios en tu plan de hosting, tendrás que contactar con tu proveedor para que lo reinicien desde el servidor.
Causa 3: El usuario de la base de datos no tiene permisos sobre la base de datos
Este es un error muy típico, sobre todo después de una migración. Imagina que has creado un nuevo usuario y una nueva base de datos, pero te has olvidado de "unir" al usuario con la base de datos, o le has dado permisos insuficientes. Es como tener la llave (usuario) pero no tener permiso para entrar en la casa (base de datos).
¿Cómo solucionarlo?
- Ve a "Administrador de bases de datos MySQL": En tu panel de DirectAdmin, busca esta opción en la sección de "Base de Datos".
- Revisa la asignación: Verás una lista de bases de datos y sus usuarios asociados.
- Añade el usuario a la base de datos: Si tu usuario no está en la lista de "Usuarios" de tu base de datos, selecciónalo y haz clic en "Agregar".
- Asigna TODOS los privilegios: Cuando lo agregues, asegúrate de marcar la casilla "TODOS LOS PRIVILEGIOS" o "ALL PRIVILEGES". A veces, si solo se marcan algunos, PrestaShop falla al intentar crear tablas o acceder a ciertas funciones.
[INFO]
En DirectAdmin, el proceso se llama "Administrador de bases de datos MySQL". Si tu usuario ya está asignado, puedes intentar hacer clic en el icono de "Editar" junto al usuario y volver a marcar todos los privilegios para asegurarte. Es una solución muy común para el PrestaShop cannot connect database DirectAdmin que no es por contraseña.
Causa 4: El servidor de la base de datos no es "localhost"
Este es un punto que confunde a muchos. En la configuración de PrestaShop, en el parámetro database_host, a veces no se debe poner localhost, sino una dirección IP o un nombre de host específico que te ha proporcionado tu proveedor de hosting.
En muchos servidores compartidos con DirectAdmin, el host suele ser localhost, pero en servidores más avanzados o con bases de datos separadas, puede ser algo como mysql.tudominio.com o una IP del tipo 127.0.0.1.
¿Cómo solucionarlo?
- Revisa la información de tu hosting: Busca en el correo de bienvenida de tu proveedor o en el panel de DirectAdmin la sección de "Información de la base de datos".
- Prueba con "127.0.0.1": A veces,
localhostfalla por problemas de resolución de nombres en el servidor. Cambia el valor enparameters.phpdelocalhosta127.0.0.1y guarda los cambios. Esto fuerza a PHP a usar la dirección IP de bucle invertido, que es más rápida y fiable. - Prueba con el nombre del servidor MySQL: Si tu proveedor te ha dado un nombre específico como
db.example.com, úsalo.
Causa 5: Archivos corruptos o caché de PrestaShop
A veces, el error no es de la base de datos en sí, sino de que PrestaShop tiene una caché corrupta que le impide leer la configuración correctamente. Esto puede pasar tras una actualización fallida o una instalación de un módulo problemático.
¿Cómo solucionarlo?
- Borra la caché manualmente: Ve al Administrador de Archivos en DirectAdmin.
- Navega a la carpeta
var/cache(PrestaShop 1.7+) ocache(PrestaShop 1.6): Dentro de esta carpeta, hay subcarpetas con nombres de código (comodev,prod, o archivos.php). - Elimina el contenido: Borra todos los archivos y carpetas dentro de
var/cacheocache, pero no borres la carpeta en sí. Si no te deja borrar, intenta vaciarla. - Reintenta cargar tu tienda: Después de borrar la caché, PrestaShop la regenerará automáticamente. A veces, este simple paso soluciona el misterioso solucionar error PrestaShop DirectAdmin.
[TIP]
Si no puedes borrar los archivos de caché, cámbiales el nombre (por ejemplo, acache_old) para que PrestaShop no los encuentre y cree otros nuevos. Luego puedes borrar los antiguos.
Causa 6: Problemas con el puerto de conexión
Por defecto, MySQL usa el puerto 3306. En la configuración de PrestaShop, a veces hay un parámetro database_port. Si tu servidor usa un puerto diferente (algo poco común pero posible en configuraciones de hosting gestionado), la conexión fallará.
¿Cómo solucionarlo?
- Abre el archivo
parameters.phpcomo hicimos antes. - Busca la línea
database_port: Si no existe, puedes añadirla. - Verifica el puerto: Lo más normal es que sea
3306. Si tu proveedor te ha indicado otro, cámbialo. Si no sabes cuál es, déjalo en3306o elimina la línea para que use el valor por defecto.
Causa 7: El problema es de tu IP o de un plugin de seguridad
En algunos casos, el servidor tiene un firewall que bloquea las conexiones a la base de datos desde ciertas IPs. Esto es más raro, pero puede pasar. Si estás usando una conexión VPN o tu IP ha cambiado, el servidor podría estar rechazando la conexión.
¿Cómo solucionarlo?
- Prueba desde otro dispositivo: Intenta acceder a tu tienda desde el móvil con datos móviles (desactivando el WiFi).
- Contacta con tu proveedor: Si desde el móvil funciona y desde tu PC no, el problema es de tu IP. Contacta con tu proveedor de hosting y diles que necesitas que añadan tu IP actual a la lista blanca del firewall de MySQL.
Resumen y Prevención Futura
Hemos visto las causas más comunes y sus soluciones para la conexión BD PrestaShop DirectAdmin. La clave está en la paciencia y en verificar cada uno de los puntos.
Checklist rápido para solucionar el error:
- Verifica las credenciales en
app/config/parameters.phpoconfig/settings.inc.php. (Causa 1) - Reinicia el servicio MySQL desde DirectAdmin. (Causa 2)
- Comprueba los privilegios del usuario en la base de datos. (Causa 3)
- Cambia
localhostpor127.0.0.1. (Causa 4) - Borra la carpeta de caché de PrestaShop. (Causa 5)
- Revisa el puerto de conexión. (Causa 6)
- Descarta un bloqueo por IP. (Causa 7)
[WARNING]
Siempre haz una copia de seguridad de tu archivoparameters.phposettings.inc.phpantes de editarlo. Si cometes un error, podrás restaurarlo fácilmente. También es recomendable hacer una copia de seguridad de la base de datos si tienes acceso a phpMyAdmin.
Para evitar esto en el futuro:
- Anota tus credenciales: Guarda en un lugar seguro el nombre de la BD, el usuario y la contraseña.
- Usa contraseñas robustas pero sin caracteres extraños: Evita usar
$,",'o\en la contraseña de la base de datos para prevenir problemas de escape en el archivo de configuración. - Mantén PrestaShop actualizado: Las versiones antiguas son más propensas a errores de compatibilidad con las nuevas versiones de PHP y MySQL.
Con esta guía, deberías ser capaz de resolver el error por ti mismo en la mayoría de los casos. Si después de seguir todos los pasos el problema persiste, no dudes en contactar con tu proveedor de hosting, ya que el problema podría estar a un nivel más profundo del servidor, como un fallo en el disco duro o una corrupción de las tablas de MySQL.
¡Esperamos que tu tienda vuelva a estar en línea muy pronto!
