Saltar al contenido
TCPRiesgo alto si se expone

Puerto 3306 (MySQL / MariaDB): para qué sirve y cómo protegerlo

El puerto 3306 TCP es el puerto por defecto de MySQL y MariaDB. Las aplicaciones (WordPress, Laravel, Nextcloud) se conectan por él a la base de datos. Debe estar cerrado a Internet: si la aplicación está en el mismo servidor, MySQL debería escuchar solo en 127.0.0.1.

Qué es el puerto 3306

En Ubuntu y Debian, MySQL escucha por defecto solo en localhost (bind-address = 127.0.0.1). Cambiarlo a 0.0.0.0 para conectar desde casa con un cliente gráfico es un error habitual: deja la base de datos expuesta a todo Internet.

Para administrarla en remoto, lo más seguro es un túnel SSH: la conexión pasa cifrada por el puerto 22 y MySQL sigue escuchando solo en local.

¿Es peligroso tener abierto el puerto 3306?

Riesgo alto: No debe estar abierto a Internet.

  • Fuerza bruta contra root y otros usuarios.
  • Ataques de ransomware que borran las tablas y dejan una nota de rescate.

Cómo proteger el puerto 3306

  • bind-address = 127.0.0.1 si la aplicación está en el mismo servidor.
  • Usuarios con host concreto ('app'@'10.0.0.5'), nunca '%'.
  • Túnel SSH para administrar en remoto.
  • mysql_secure_installation tras instalar.

Comandos y configuración

Comprobar si el puerto 3306 está abierto

bash
sudo ss -tlnp | grep ':3306 '
nc -zv 203.0.113.10 3306
sudo nmap -p 3306 203.0.113.10

Túnel SSH para usar DBeaver o MySQL Workbench

bash
ssh -N -L 3307:127.0.0.1:3306 ana@203.0.113.10
# y conecta el cliente a 127.0.0.1:3307

¿En qué interfaz escucha MySQL?

bash
sudo ss -tlnp | grep 3306
grep -R "bind-address" /etc/mysql/

Usuario limitado a una IP

sql
CREATE USER 'app'@'10.0.0.5' IDENTIFIED BY 'una-clave-larga-y-unica';
GRANT SELECT, INSERT, UPDATE, DELETE ON tienda.* TO 'app'@'10.0.0.5';

También puedes comprobarlo desde fuera de tu red con nuestro escáner de puertos online.

Herramientas para comprobarlo

Preguntas frecuentes

¿Cómo me conecto a MySQL de un servidor remoto sin abrir el 3306?

Con un túnel SSH (ssh -L 3307:127.0.0.1:3306 usuario@servidor) y conectando el cliente a localhost:3307.

¿Es peligroso abrir el puerto 3306?

Sí. Los bots lo escanean continuamente y prueban contraseñas. Una base de datos expuesta con una contraseña débil se compromete en horas.

Puertos relacionados

Ver la lista de puertos