🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo solucionar el error 'Connection refused' al conectar PrestaShop a MySQL

Actualizado el 22 de enero de 2026

¿Qué significa exactamente el error "Connection refused" en PrestaShop?

Cuando intentas instalar o conectar tu PrestaShop a una base de datos MySQL y aparece el error "Connection refused", lo que está ocurriendo es que tu aplicación web no puede establecer una comunicación con el servidor de bases de datos. Es como si llamaras por teléfono a alguien, pero la línea estuviera ocupada o el número no existiera. La conexión es rechazada de forma activa, no es que no haya respuesta, sino que el servidor MySQL dice "no quiero o no puedo aceptar tu llamada".

Este error es uno de los más comunes al montar una tienda online, y la buena noticia es que tiene solución en la gran mayoría de los casos. No necesitas ser un experto en sistemas para resolverlo, solo tienes que seguir una serie de pasos lógicos y ordenados. En esta guía te voy a acompañar para que identifiques la causa y apliques la solución correcta, incluso si nunca has tocado un servidor en tu vida.


¿Por qué aparece este error? Las causas más habituales

Antes de lanzarnos a cambiar cosas al azar, es importante entender qué puede estar provocando el rechazo de la conexión. Las causas más frecuentes son:

  1. El servicio MySQL no está corriendo (el servidor está apagado o se ha caído).

  2. El puerto de conexión está bloqueado (normalmente el 3306, pero puede variar).

  3. El host de la base de datos es incorrecto (estás apuntando a una IP o dominio equivocado).

  4. MySQL solo escucha en localhost y tu PrestaShop está intentando conectar desde otro servidor o dirección IP.

  5. Firewall del servidor bloqueando las conexiones entrantes.

  6. Credenciales incorrectas (usuario o contraseña mal escritos, o sin permisos para conectarse desde ese host).

  7. El archivo de configuración de PrestaShop (parameters.php) tiene datos obsoletos o erróneos.

A continuación, vamos a ir paso a paso, desde lo más simple hasta lo más técnico, para que puedas solucionar el error "Connection refused" en tu PrestaShop.


Paso 1: Verifica que MySQL está en funcionamiento

Lo primero y más básico es comprobar que el servicio MySQL está activo. Si tu servidor se reinició o el proceso se detuvo por cualquier motivo, MySQL no aceptará conexiones y te dará exactamente ese error.

Si tu hosting es compartido

En un hosting compartido, normalmente no tienes acceso al servidor directamente. En ese caso, revisa el panel de control de tu proveedor (cPanel, Plesk, Syspanel, etc.) y busca la sección de "Bases de Datos" o "MySQL". Deberías ver el estado del servicio. Si aparece como detenido, intenta iniciarlo desde ahí.

[TIP] Si tu proveedor usa Syspanel, el panel de control personalizado, recuerda que su puerto de acceso es el 2106. Entra con tu usuario y contraseña y busca la sección de bases de datos.

Si tienes un VPS o servidor dedicado

Accede por SSH a tu servidor y ejecuta este comando:

sudo systemctl status mysql

O si tu sistema usa MariaDB:

sudo systemctl status mariadb

Si ves que está inactivo o "dead", lo inicias con:

sudo systemctl start mysql

Y para que se inicie automáticamente con el sistema:

sudo systemctl enable mysql

[WARNING] Si el servicio no arranca, revisa los logs de error en /var/log/mysql/error.log o /var/log/mysql/mysql.log. Ahí verás el motivo exacto del fallo, que suele ser un problema de permisos o de espacio en disco.


Paso 2: Comprueba el puerto de conexión

Por defecto, MySQL escucha en el puerto 3306. Si tu PrestaShop está configurado para usar otro puerto, o si el servidor MySQL está configurado para escuchar en un puerto diferente, tendrás el error "Connection refused".

Cómo verificar el puerto en tu servidor

Ejecuta:

sudo netstat -tlnp | grep mysql

O también:

sudo ss -tlnp | grep mysql

Deberías ver algo como:

tcp   LISTEN  0  128  0.0.0.0:3306  0.0.0.0:*  users:(("mysqld",pid=1234,fd=20))

Si el puerto no es el 3306, anota el que aparece. Luego, en tu archivo de configuración de PrestaShop, tendrás que indicar ese puerto.

[INFO] En algunos servidores, MySQL se configura para escuchar solo en localhost (127.0.0.1). Si tu PrestaShop está en el mismo servidor, eso es correcto. Pero si tu base de datos está en otro servidor, tendrás que cambiar esta configuración.


Paso 3: Revisa el host de la base de datos en tu PrestaShop

El error "Connection refused" también aparece cuando el host que has puesto en la configuración no es el correcto. En PrestaShop, esta configuración se encuentra en el archivo:

config/parameters.php

Abre ese archivo y busca las líneas que empiezan por 'database_host'. Deberías ver algo así:

'database_host' => 'localhost',

¿Qué host debo usar?

  • Si MySQL y PrestaShop están en el mismo servidor: usa localhost o 127.0.0.1.

  • Si MySQL está en otro servidor: usa la IP pública o el dominio de ese servidor. Por ejemplo: 'database_host' => '192.168.1.10'.

  • Si usas un servicio de hosting con base de datos separada: el host suele ser un nombre como mysql.midominio.com o db123456.whost.com. Este dato lo encuentras en el panel de control de tu hosting.

[WARNING] Si estás usando el puerto Syspanel para acceder al panel de tu hosting, no confundas ese puerto con el puerto de MySQL. Syspanel usa el puerto 2106 para el acceso web al panel, pero la base de datos seguirá usando el 3306 a menos que te digan lo contrario.


Paso 4: Verifica que MySQL permite conexiones remotas (si aplica)

Si tu base de datos está en un servidor distinto al de PrestaShop, es muy probable que MySQL esté configurado para aceptar solo conexiones locales. Esto es una medida de seguridad muy común.

Cómo habilitar conexiones remotas

  1. Edita el archivo de configuración de MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  1. Busca la línea que dice:
bind-address = 127.0.0.1
  1. Cámbiala a:
bind-address = 0.0.0.0

Esto hará que MySQL escuche en todas las interfaces de red.

  1. Reinicia el servicio:
sudo systemctl restart mysql

[WARNING] Habilitar conexiones remotas expone tu base de datos a Internet. Asegúrate de tener un firewall configurado y contraseñas fuertes. Si no es absolutamente necesario, deja el bind-address en 127.0.0.1.


Paso 5: Revisa el firewall del servidor

El firewall puede estar bloqueando el puerto 3306, lo que provoca que la conexión sea rechazada. Si usas UFW (Uncomplicated Firewall) en Ubuntu, puedes permitir el tráfico con:

sudo ufw allow 3306/tcp

Si usas iptables directamente:

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Si tu servidor tiene Syspanel como panel de control, también puede incluir su propio firewall. Accede a través del puerto 2106 y busca la sección de seguridad o firewall para asegurarte de que el puerto 3306 está permitido.

[TIP] Si no sabes si tienes un firewall activo, ejecuta sudo ufw status. Si está inactivo, el problema no es el firewall.


Paso 6: Comprueba las credenciales y los permisos del usuario MySQL

Otra causa muy común del error "Connection refused" es que el usuario de MySQL que has configurado en PrestaShop no tiene permisos para conectarse desde el host que estás usando.

Cómo verificar y otorgar permisos

Accede a MySQL como administrador:

sudo mysql

O si usas contraseña:

mysql -u root -p

Luego ejecuta:

SELECT user, host FROM mysql.user;

Verás una lista de usuarios y desde qué hosts pueden conectarse. Si tu usuario de PrestaShop solo tiene host = localhost pero estás conectando desde otra IP, tendrás que crear o modificar el usuario.

Para crear un usuario que pueda conectarse desde cualquier host:

CREATE USER 'tu_usuario'@'%' IDENTIFIED BY 'tu_contraseña';
GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario'@'%';
FLUSH PRIVILEGES;

[INFO] El símbolo % significa "cualquier host". Si quieres restringir a una IP específica, reemplaza % por esa IP. Por ejemplo: 'tu_usuario'@'192.168.1.50'.


Paso 7: Revisa el archivo parameters.php de PrestaShop

Si ya has comprobado todo lo anterior y sigues con el error, es posible que el archivo de configuración de PrestaShop tenga datos incorrectos. Además del host, verifica:

  • 'database_port' => '3306' (o el puerto que corresponda).

  • 'database_name' => 'nombre_de_tu_bd'.

  • 'database_user' => 'tu_usuario'.

  • 'database_password' => 'tu_contraseña'.

Asegúrate de que no haya espacios extra, comillas mal colocadas o caracteres ocultos. Un simple error de escritura puede provocar el rechazo de la conexión.

[WARNING] Después de editar este archivo, borra siempre la carpeta var/cache para que PrestaShop no use la configuración antigua. Puedes hacerlo con:

rm -rf var/cache/*

Paso 8: Prueba la conexión manualmente

Para descartar que el problema sea de PrestaShop, puedes probar la conexión directamente desde la terminal del servidor donde está instalado PrestaShop:

mysql -h HOST -P PUERTO -u USUARIO -p

Por ejemplo:

mysql -h localhost -P 3306 -u prestashop_user -p

Si esta conexión también falla con "Connection refused", el problema está en el servidor MySQL o en la red. Si funciona, el problema está en la configuración de PrestaShop.


Preguntas frecuentes (FAQ)

¿Qué hago si no tengo acceso SSH a mi servidor?

Si tu hosting es compartido, no podrás hacer los pasos de terminal. Contacta con el soporte técnico de tu proveedor y diles que tienes un error "Connection refused" al conectar PrestaShop a MySQL. Ellos podrán verificar el estado del servicio y la configuración de red.

¿Puede ser un problema de la versión de PHP?

No directamente. El error "Connection refused" es de red o de servicio. Sin embargo, una versión de PHP muy antigua o muy nueva puede tener problemas con el driver de MySQL. Asegúrate de tener una versión de PHP compatible con tu PrestaShop (generalmente PHP 7.4 u 8.0+).

¿Y si uso Syspanel como panel de control?

Syspanel es un panel de control de hosting que se accede por el puerto 2106. Dentro de Syspanel, busca la sección de "Bases de datos" para ver el estado de MySQL y obtener los datos de conexión correctos (host, puerto, usuario). También puedes reiniciar el servicio MySQL desde ahí si tienes permisos.

¿El error "Connection refused" es lo mismo que "Connection timed out"?

No. "Connection refused" significa que el servidor MySQL está activo pero rechaza la conexión (por configuración, firewall o permisos). "Connection timed out" significa que el servidor no responde en absoluto (posiblemente está apagado o hay un problema de red).


Resumen final y recomendaciones

El error "Connection refused" al conectar PrestaShop a MySQL se resuelve siguiendo estos pasos en orden:

  1. Verifica que MySQL está corriendo.

  2. Comprueba que el puerto es el correcto.

  3. Revisa el host de la base de datos.

  4. Habilita conexiones remotas si es necesario.

  5. Abre el puerto en el firewall.

  6. Asegura que el usuario tiene permisos.

  7. Revisa el archivo parameters.php.

  8. Prueba la conexión manualmente.

[TIP] Si después de todo esto sigues sin conexión, revisa los logs de MySQL (/var/log/mysql/error.log) y los logs de PrestaShop en la carpeta var/logs. Ahí encontrarás más detalles sobre el error exacto.

Recuerda que la paciencia es clave. Ve paso a paso, sin saltarte ninguno, y en la mayoría de los casos el error se resuelve en menos de 30 minutos. Y si tienes un proveedor de hosting, no dudes en abrir un ticket de soporte: es parte de su trabajo ayudarte con este tipo de incidencias.

Espero que esta guía te haya sido de ayuda. Si tienes más dudas, deja un comentario o contacta con tu proveedor de hosting. ¡Tu tienda online estará funcionando en poco tiempo!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel