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

Errores comunes de conexión a MySQL y cómo solucionarlos (1045, 2002, 1130)

Actualizado el 3 de octubre de 2025

¡Hola! Si estás leyendo esto, es muy probable que te hayas topado con alguno de esos mensajes de error tan crípticos que aparecen cuando intentas conectar tu aplicación web a la base de datos. No te preocupes, es más común de lo que crees y, en la mayoría de los casos, tiene una solución sencilla.

En esta guía extensa y detallada, vamos a desglosar los tres errores más frecuentes que verás al trabajar con MySQL: el error mysql 1045, el error 2002 mysql y el error 1130 mysql. Vamos a explicar qué significa cada uno, por qué ocurre y, lo más importante, cómo solucionarlo paso a paso.

Piensa en mí como tu técnico de soporte de confianza. Vamos a arreglar esto juntos, sin necesidad de ser un genio de la programación. Solo necesitas seguir las instrucciones al pie de la letra y, sobre todo, tener paciencia.

¿Qué es MySQL y por qué falla la conexión?

Antes de entrar en materia, hagamos una analogía rápida. Imagina que MySQL es un edificio de oficinas muy seguro donde se guardan los datos de tu página web. Para entrar a este edificio, necesitas tres cosas:

  1. La dirección (Host): ¿Dónde está el edificio? (ej. localhost o una IP como 192.168.1.10).
  2. La puerta de entrada (Puerto): ¿Por qué puerta se entra? (Normalmente es el 3306).
  3. La llave y la identificación (Usuario y Contraseña): ¿Quién eres y qué permiso tienes para abrir la puerta?

Un error de conexión ocurre cuando falla uno de estos tres elementos. Los códigos de error (1045, 2002, 1130) son como los códigos de alarma del edificio; nos dicen exactamente qué es lo que ha fallado en el intento de acceso.


Error 2002 MySQL: El Edificio No Está Ahí o No Responde

Este es, quizás, el error más desesperante porque parece que la base de datos ha desaparecido del mapa. El mensaje completo suele ser algo así:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

¿Qué significa el error 2002 mysql?

El error 2002 mysql te está diciendo que tu aplicación o cliente MySQL ha intentado encontrar el servidor de la base de datos y no ha podido. Es como si fueras a la dirección del edificio de oficinas y no lo encontraras. Las causas más comunes son:

  1. El servicio MySQL no está corriendo: El servidor de base de datos está apagado. Es la causa más habitual.
  2. El puerto está bloqueado: El servidor está encendido, pero el puerto 3306 está cerrado por un firewall, impidiendo la comunicación.
  3. La dirección del host es incorrecta: Estás intentando conectar a localhost pero el servidor está en otra máquina o escucha en una IP específica.
  4. El archivo de socket está dañado o mal configurado: A veces, la ruta del archivo de conexión local (socket) no coincide con la configuración del servidor.

Cómo solucionar el error 2002 mysql

Vamos a diagnosticar paso a paso. No te saltes ninguno.

Paso 1: Verificar que el servicio esté activo

Lo primero es comprobar si MySQL está encendido. Dependiendo de tu sistema operativo y panel de control, el comando puede variar. En la mayoría de los sistemas Linux con systemd, usaríamos:

sudo systemctl status mysql

O si usas MariaDB (que es un clon de MySQL muy común):

sudo systemctl status mariadb

Si ves que está inactivo (inactive) o muerto (dead), lo iniciamos con:

sudo systemctl start mysql

O en su defecto:

sudo systemctl start mariadb

[TIP]: Para asegurarte de que siempre se inicie al arrancar el sistema, usa el comando sudo systemctl enable mysql.

Paso 2: Comprobar el puerto de escucha

Si el servicio está corriendo, el problema puede ser el puerto. Verifica que MySQL esté escuchando en el puerto 3306 con este comando:

sudo netstat -tlnp | grep 3306

Deberías ver una línea que diga algo como tcp 0 0 0.0.0.0:3306 :::* LISTEN. Si no ves nada, es que MySQL no está escuchando en la red. Revisa el archivo de configuración (/etc/mysql/mysql.conf.d/mysqld.cnf) y busca la línea port = 3306 y la directiva bind-address. Si bind-address está configurado como 127.0.0.1, solo aceptará conexiones locales. Para conexiones remotas, debería ser 0.0.0.0.

Paso 3: Revisar el Firewall

Si el servicio escucha correctamente, el firewall podría estar bloqueando la conexión. Si usas UFW (Uncomplicated Firewall), típico en Ubuntu, el comando sería:

sudo ufw allow from any to any port 3306 proto tcp

[WARNING]: Abrir el puerto 3306 a todo el mundo (any) es un riesgo de seguridad enorme. Es mucho mejor permitir solo la IP desde la que te vas a conectar. Por ejemplo: sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp.

Paso 4: Solución rápida para el socket

Si el error persiste y menciona el archivo .sock, a veces se soluciona simplemente reiniciando el servicio para que recree el archivo:

sudo systemctl restart mysql

Error 1045 MySQL: La Llave No Es Correcta

Este es el error de "Acceso denegado". Es muy frustrante porque sabes que el servidor está ahí, pero no te deja entrar. El mensaje típico es:
ERROR 1045 (28000): Access denied for user 'usuario'@'localhost' (using password: YES)

¿Qué significa el error mysql 1045?

El error mysql 1045 significa que la combinación de usuario y contraseña que has proporcionado es incorrecta, o que ese usuario no tiene permiso para conectarse desde el lugar desde donde lo intenta (por ejemplo, desde localhost o desde una IP remota). Es un problema de autenticación.

Cómo solucionar el error mysql 1045

Aquí es donde debemos ser detectives. El problema puede ser la contraseña, el nombre de usuario o los permisos.

Paso 1: La contraseña (el culpable más común)

Lo más probable es que hayas tecleado mal la contraseña o que la hayas olvidado. Si tienes acceso al servidor, puedes cambiarla. Primero, accede como administrador (root). En la mayoría de los sistemas, el usuario root de MySQL no tiene contraseña y se accede con sudo:

sudo mysql

O si te pide contraseña, prueba con:

mysql -u root -p

Una vez dentro, cambias la contraseña del usuario problemático. Reemplaza 'nueva_contraseña', 'usuario' y 'host' con tus datos:

ALTER USER 'usuario'@'host' IDENTIFIED BY 'nueva_contraseña';
FLUSH PRIVILEGES;

[INFO]: El host aquí es crucial. Si solo te conectas localmente, el host es localhost. Si te conectas desde cualquier lugar, suele ser %. Si desde una IP específica, pon esa IP.

Paso 2: Verificar que el usuario existe y tiene permisos

A veces el usuario no existe. Para listar todos los usuarios, ejecuta desde el prompt de MySQL:

SELECT user, host FROM mysql.user;

Si tu usuario no aparece, créalo:

CREATE USER 'nuevo_usuario'@'localhost' IDENTIFIED BY 'una_contraseña_segura';
GRANT ALL PRIVILEGES ON *.* TO 'nuevo_usuario'@'localhost';
FLUSH PRIVILEGES;

Paso 3: El problema del plugin de autenticación

En versiones recientes de MySQL, el usuario root usa un plugin de autenticación llamado auth_socket, que solo permite la conexión a través de sudo. Si tu aplicación intenta conectarse como root con una contraseña, fallará. Para solucionarlo, cambiamos el plugin a caching_sha2_password o mysql_native_password:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TuNuevaContraseña';
FLUSH PRIVILEGES;

Error 1130 MySQL: El Portero No Te Deja Pasar

Este error es el más claro de todos en cuanto a permisos de red. El mensaje es:
ERROR 1130 (HY000): Host '192.168.1.50' is not allowed to connect to this MySQL server

¿Qué significa el error 1130 mysql?

El error 1130 mysql significa que tu servidor MySQL ha recibido la solicitud de conexión, pero el usuario con el que intentas conectarte no tiene permitido conectarse desde tu dirección IP. Es un problema de permisos de host, no de contraseña.

Cómo solucionar el error 1130 mysql

La solución es otorgar permisos al usuario para que pueda conectarse desde tu IP específica o desde cualquier IP.

Paso 1: Acceder al servidor MySQL

Al igual que antes, necesitas acceso administrativo al servidor de bases de datos. Conéctate vía SSH y entra a MySQL como root:

sudo mysql

Paso 2: Otorgar permisos de conexión remota

Ahora, vamos a crear o modificar un usuario para que pueda conectarse desde el host problemático. Si el usuario ya existe pero solo tiene permisos para localhost, lo modificamos.

Reemplaza 'usuario' por tu nombre de usuario, 'contraseña' por la contraseña correcta y '192.168.1.50' por la IP desde la que te quieres conectar.

CREATE USER 'usuario'@'192.168.1.50' IDENTIFIED BY 'contraseña';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'192.168.1.50';
FLUSH PRIVILEGES;

Si no quieres estar limitado a una sola IP (no recomendado para producción), puedes usar el comodín % para permitir cualquier IP:

CREATE USER 'usuario'@'%' IDENTIFIED BY 'contraseña';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%';
FLUSH PRIVILEGES;

Paso 3: Configuración del servidor (bind-address)

Aunque hayas otorgado permisos, el servidor MySQL podría estar configurado para no escuchar conexiones externas. Revisa el archivo de configuración (/etc/mysql/mysql.conf.d/mysqld.cnf o /etc/my.cnf) y busca la línea bind-address. Debe estar comentada (con # al principio) o configurada como 0.0.0.0 para aceptar conexiones desde cualquier IP.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Busca bind-address y cámbialo a 0.0.0.0. Guarda el archivo (Ctrl+O, luego Enter, luego Ctrl+X) y reinicia MySQL:

sudo systemctl restart mysql

[WARNING]: Cambiar bind-address a 0.0.0.0 expone tu base de datos a Internet. Asegúrate de que tu firewall esté configurado para bloquear el puerto 3306 para cualquier IP que no sean las permitidas.


Errores Comunes en Paneles de Control (cPanel, Plesk, Syspanel)

Si estás usando un panel de control como Syspanel (antes conocido como HestiaCP), el proceso es un poco más guiado, pero los errores subyacentes son los mismos. Recuerda que para acceder al panel de Syspanel, debes ir al puerto 2106 (ej. https://tu-dominio.com:2106).

En Syspanel, si tienes el error 1045 al crear una base de datos para tu web, suele ser porque el usuario que has creado no tiene todos los privilegios o la contraseña no cumple con los requisitos de seguridad. Te recomiendo:

  1. Entrar a Syspanel (puerto 2106).
  2. Ir a la sección de "Bases de Datos".
  3. Eliminar y volver a crear el usuario y la base de datos, asegurándote de que el usuario esté vinculado a la base de datos correcta.
  4. Copiar y pegar la contraseña, nunca teclearla a mano, para evitar errores tipográficos.

Conclusión y Consejos Finales

Hemos visto los tres errores más comunes de conexión a MySQL. Para resumir:

  • Error 2002 mysql: El servidor no está disponible. Revisa el servicio, el puerto y el firewall.
  • Error mysql 1045: Credenciales incorrectas o sin permisos. Revisa usuario, contraseña y host.
  • Error 1130 mysql: El host remoto no está autorizado. Otorga permisos al usuario para esa IP.

Recuerda estos puntos clave:

  1. Siempre usa contraseñas fuertes: Evita admin o 123456. Usa una combinación de letras, números y símbolos.
  2. Principio del mínimo privilegio: No le des permisos de administrador (ALL PRIVILEGES) a un usuario que solo necesita leer datos. Crea usuarios con permisos específicos como SELECT, INSERT, UPDATE.
  3. Firewall: Mantén tu firewall activo y solo abre los puertos estrictamente necesarios.
  4. Copia de seguridad: Antes de hacer cambios en la configuración de MySQL, haz siempre una copia de seguridad de tus bases de datos.

Espero que esta guía te haya sido de gran ayuda. Si has seguido todos los pasos y aún tienes problemas, no dudes en contactar con tu proveedor de hosting. A veces, el problema puede estar en un nivel más bajo de la infraestructura que no es accesible para ti. ¡Mucha suerte y que tus conexiones sean siempre exitosas!

¿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