Solucionar errores comunes de conexión a MySQL
Errores comunes de conexión
Los errores de conexión a MySQL pueden tener varias causas. En esta guía te ayudamos a identificar y solucionar los problemas más frecuentes.
Error 1: "Can't connect to MySQL server"
Causas posibles:
- MySQL no está corriendo
- Puerto bloqueado por firewall
- Dirección IP o host incorrecto
- MySQL no está escuchando en la interfaz correcta
Soluciones:
1. Verificar que MySQL esté corriendo:
sudo systemctl status mysql
# O
sudo systemctl status mysqld
Si no está corriendo, iniciarlo:
sudo systemctl start mysql
sudo systemctl enable mysql
2. Verificar que MySQL esté escuchando:
sudo netstat -tlnp | grep 3306
# O
sudo ss -tlnp | grep 3306
Deberías ver algo como: 0.0.0.0:3306 o 127.0.0.1:3306
3. Verificar firewall:
sudo ufw status
sudo ufw allow 3306/tcp
4. Verificar configuración de bind-address:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Verificá que bind-address esté configurado correctamente: - 127.0.0.1 para solo conexiones locales - 0.0.0.0 para conexiones remotas
Error 2: "Access denied for user"
Causas posibles:
- Contraseña incorrecta
- Usuario no existe
- Usuario no tiene permisos para conectarse desde ese host
Soluciones:
1. Verificar credenciales:
mysql -u usuario -p
Si funciona desde la terminal pero no desde la aplicación, el problema puede ser en la configuración de la aplicación.
2. Verificar que el usuario existe:
mysql -u root -p
SELECT user, host FROM mysql.user WHERE user='nombre_usuario';
3. Verificar permisos del usuario:
SHOW GRANTS FOR 'usuario'@'localhost';
SHOW GRANTS FOR 'usuario'@'%';
4. Otorgar permisos si es necesario:
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario'@'localhost';
FLUSH PRIVILEGES;
Error 3: "Too many connections"
Causa: Se alcanzó el límite máximo de conexiones simultáneas.
Soluciones:
1. Ver conexiones actuales:
mysql -u root -p
SHOW PROCESSLIST;
SHOW STATUS LIKE 'Threads_connected';
2. Ver límite máximo:
SHOW VARIABLES LIKE 'max_connections';
3. Aumentar límite de conexiones:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Agregá o modificá:
[mysqld]
max_connections = 200
Reiniciá MySQL:
sudo systemctl restart mysql
4. Cerrar conexiones inactivas:
mysql -u root -p
KILL id_proceso;
Error 4: "Connection refused"
Causas posibles:
- MySQL no está corriendo
- Puerto incorrecto
- Firewall bloqueando el puerto
Soluciones:
1. Verificar que MySQL esté corriendo:
sudo systemctl status mysql
2. Verificar puerto:
mysql -u root -p -e "SHOW VARIABLES LIKE 'port';"
3. Verificar firewall:
sudo ufw status
sudo iptables -L -n | grep 3306
Error 5: "Host is not allowed to connect"
Causa: El host desde el que intentás conectarte no está permitido.
Soluciones:
1. Ver hosts permitidos:
mysql -u root -p
SELECT user, host FROM mysql.user WHERE user='nombre_usuario';
2. Permitir conexión desde cualquier host (menos seguro):
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario'@'%' IDENTIFIED BY 'contraseña';
FLUSH PRIVILEGES;
3. Permitir conexión desde IP específica (más seguro):
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario'@'192.168.1.100' IDENTIFIED BY 'contraseña';
FLUSH PRIVILEGES;
Error 6: "Unknown database"
Causa: La base de datos especificada no existe.
Soluciones:
1. Listar bases de datos disponibles:
mysql -u root -p
SHOW DATABASES;
2. Crear la base de datos si no existe:
CREATE DATABASE nombre_base_datos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. Verificar nombre en la configuración:
Revisá que el nombre de la base de datos en tu aplicación sea correcto (case-sensitive en Linux).
Error 7: "Lost connection to MySQL server"
Causas posibles:
- Timeout de conexión
- MySQL se reinició
- Problemas de red
- Consulta muy larga
Soluciones:
1. Aumentar timeout:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Agregá:
[mysqld]
wait_timeout = 600
interactive_timeout = 600
2. Verificar logs de MySQL:
sudo tail -f /var/log/mysql/error.log
3. Verificar estado de MySQL:
sudo systemctl status mysql
Error 8: "SSL connection error"
Causa: Problema con la configuración SSL.
Soluciones:
1. Deshabilitar verificación SSL (solo para desarrollo):
En la conexión, agregá: ?ssl-mode=DISABLED
2. Configurar SSL correctamente:
mysql -u root -p
SHOW VARIABLES LIKE '%ssl%';
Herramientas de diagnóstico
1. Probar conexión desde terminal:
mysql -h localhost -u usuario -p
mysql -h 127.0.0.1 -u usuario -p
mysql -h IP_SERVIDOR -u usuario -p
2. Verificar conectividad de red:
telnet IP_SERVIDOR 3306
# O
nc -zv IP_SERVIDOR 3306
3. Ver logs de MySQL:
sudo tail -f /var/log/mysql/error.log
sudo tail -f /var/log/mysql/mysql.log
4. Ver procesos de MySQL:
mysql -u root -p
SHOW PROCESSLIST;
SHOW STATUS;
Checklist de solución de problemas
- ✅ Verificar que MySQL esté corriendo
- ✅ Verificar credenciales (usuario y contraseña)
- ✅ Verificar que la base de datos exista
- ✅ Verificar permisos del usuario
- ✅ Verificar configuración de firewall
- ✅ Verificar configuración de bind-address
- ✅ Verificar logs de MySQL
- ✅ Verificar conectividad de red
- ✅ Verificar límites de conexiones
Prevención de problemas
- Monitoreá las conexiones: Revisá regularmente cuántas conexiones hay activas
- Usá conexiones persistentes: En aplicaciones web, usá connection pooling
- Cerá conexiones correctamente: Asegurate de cerrar conexiones cuando no se usen
- Configurá timeouts apropiados: Evitá timeouts muy cortos o muy largos
- Hacé backups regulares: Para poder restaurar si hay problemas
¿Necesitás ayuda?
Si no podés resolver el error de conexión, abrí un ticket desde el panel de billing.baires.host o contactanos por soporte. Incluí los mensajes de error completos y los pasos que ya intentaste.
También podés escribirnos por nuestras redes:
- Instagram: @baires_host
- Discord (soporte activo): https://discord.gg/dzjauatAFN
- Linktree: https://linktr.ee/baires.host