Acceso externo a servidor de MySQL en servidores Linux

11min

Permitir el acceso externo a un servidor de MySQL en Linux puede ser necesario en múltiples contextos profesionales. Desde entornos de desarrollo colaborativos hasta sistemas distribuidos donde varias aplicaciones necesitan interactuar con la base de datos de forma remota, esta configuración se vuelve esencial.

Sin embargo, abrir el acceso externo también supone un riesgo potencial para la seguridad del sistema, por lo que debe realizarse siguiendo buenas prácticas y medidas de protección adecuadas. En este artículo, veremos paso a paso cómo habilitar el acceso remoto a MySQL en un entorno Linux, con o sin paneles de control como Plesk, y cómo conectar desde clientes externos de forma segura.

Índice

¿Qué implica permitir el acceso externo a MySQL?

Permitir conexiones remotas a un servidor de MySQL significa que otros equipos, fuera del entorno local, podrán conectarse a la base de datos utilizando su dirección IP y las credenciales adecuadas. Esta configuración amplía la funcionalidad del servidor, pero también puede aumentar su exposición si no se gestiona correctamente.

Diferencias entre acceso local y remoto

El acceso local se limita a peticiones realizadas desde el mismo servidor donde está instalado MySQL, mientras que el acceso remoto permite conexiones desde otros dispositivos. Este último es útil para aplicaciones web distribuidas, equipos de desarrollo o integraciones externas, pero requiere configuración adicional.

Riesgos asociados y consideraciones de seguridad

Abrir MySQL a internet sin controles adecuados puede exponer tu servidor a ataques como fuerza bruta, sniffing o acceso no autorizado. Por eso es imprescindible aplicar medidas de seguridad como limitar las IPs autorizadas, cifrar las conexiones y utilizar contraseñas robustas.

Requisitos previos antes de configurar el acceso remoto

Antes de comenzar la configuración, es importante asegurarse de que se cumplen ciertos requisitos técnicos y de acceso para evitar errores durante el proceso.

  • Acceso root al servidor Linux o permisos de superusuario. Necesitarás privilegios de root o superusuario para editar archivos de configuración, reiniciar servicios y modificar reglas de firewall.
  • MySQL instalado y en funcionamiento. Verifica que el servicio MySQL esté correctamente instalado, configurado y corriendo en el servidor.
  • Cliente con IP fija o conocida. Para mejorar la seguridad, es recomendable que los clientes que vayan a conectarse remotamente cuenten con una dirección IP fija o conocida, para poder restringir el acceso desde otras direcciones.

Pasos necesarios para poder configurar el acceso externo al servidor de MySQL

Una vez preparados los requisitos, puedes proceder a habilitar el acceso remoto siguiendo estos pasos clave:

Editar el archivo de configuración mysqld.cnf

Localiza y abre el archivo de configuración de MySQL, normalmente ubicado en /etc/mysql/mysql.conf.d/mysqld.cnf. Busca la línea que contiene bind-address = 127.0.0.1 y cámbiala por bind-address = 0.0.0.0 para permitir conexiones desde cualquier IP externa. Guarda los cambios y reinicia el servicio con sudo systemctl restart mysql.

Crear o modificar el usuario MySQL con acceso remoto

Accede a MySQL y crea un usuario con permisos remotos mediante el siguiente comando: GRANT ALL PRIVILEGES ON *.* TO ‘usuario’@’%’ IDENTIFIED BY ‘contraseña’; FLUSH PRIVILEGES;

El símbolo % indica que el usuario puede conectarse desde cualquier IP. También puedes sustituirlo por una IP concreta para mayor seguridad.

Abrir el puerto 3306 en el firewall

MySQL utiliza el puerto 3306 por defecto. Debes asegurarte de que este puerto está abierto en el firewall. Por ejemplo:

  • En UFW: sudo ufw allow 3306
  • En Firewalld: sudo firewall-cmd –permanent –add-port=3306/tcp sudo firewall-cmd –reload

Configuración extra si tenemos instalado Plesk en nuestro servidor

Si tu servidor Linux utiliza Plesk, algunas configuraciones pueden gestionarse desde la interfaz web de este panel.

Habilitar acceso remoto en la interfaz de Plesk

Accede a Plesk y dirígete a la sección Bases de datos. Selecciona la base de datos deseada y haz clic en Permitir acceso remoto. Añade la IP del cliente que se conectará y guarda los cambios.

Verificar que el puerto 3306 esté permitido en el firewall de Plesk

Desde Plesk, entra en Herramientas y configuración > Firewall. Asegúrate de que existe una regla que permita conexiones TCP al puerto 3306. Si no existe, crea una nueva y reinicia el firewall.

Cómo conectar desde un cliente gestor de bases de datos

Una vez habilitado el acceso remoto al servidor MySQL en tu entorno Linux, el siguiente paso lógico es realizar la conexión desde una herramienta de administración de bases de datos. Estas herramientas permiten interactuar con tus bases de datos de forma gráfica, facilitar el análisis de datos, la ejecución de consultas SQL y la administración general del sistema. Para lograr una conexión exitosa, es fundamental conocer las opciones disponibles, los parámetros técnicos necesarios y cómo verificar la conectividad desde tu red.

Clientes populares: MySQL Workbench, DBeaver, HeidiSQL

Entre los gestores de bases de datos más usados para conectarse remotamente a MySQL destacan:

  • MySQL Workbench: Desarrollado por Oracle, es uno de los clientes más completos. Ofrece diseño de bases de datos, ejecución de consultas SQL, y herramientas de administración y migración. Compatible con Windows, Linux y macOS.
  • DBeaver: Cliente universal de bases de datos de código abierto que soporta MySQL y muchas otras bases de datos. Su interfaz es muy intuitiva y permite establecer conexiones remotas fácilmente.
  • HeidiSQL: Herramienta ligera y muy popular entre usuarios de Windows. Soporta conexiones MySQL directas, así como a través de túneles SSH, ideal para entornos donde la seguridad es prioritaria.

Estas herramientas permiten crear perfiles de conexión guardados, lo que facilita la gestión de múltiples bases de datos distribuidas en distintos servidores.

Parámetros necesarios: IP, puerto, usuario y contraseña de MySQL

Para establecer una conexión remota desde un cliente gestor, deberás introducir los siguientes datos correctamente:

  • Dirección IP del servidor MySQL. Puede ser una IP pública o privada, según la configuración de red y si accedes a través de VPN o túnel SSH.
  • Puerto. Por defecto, MySQL escucha en el puerto 3306. Este debe estar abierto y accesible.
  • Nombre de usuario. Debe estar habilitado con permisos para conexiones remotas desde la IP del cliente (ver instrucciones de GRANT en pasos anteriores).
  • Contraseña. La correspondiente al usuario definido. Asegúrate de que sea segura y no esté almacenada en texto plano.

Una mala configuración de cualquiera de estos parámetros suele provocar errores comunes de conexión.

Verificar conectividad: pruebas con ping y telnet

Antes de intentar la conexión desde el cliente gráfico, es recomendable comprobar la conectividad básica entre el dispositivo cliente y el servidor:

  • Ping: Ejecuta ping IP_DEL_SERVIDOR para verificar si hay respuesta desde la máquina donde corre MySQL. Si no hay respuesta, puede ser un problema de red o firewall.
  • Telnet: Usa telnet IP_DEL_SERVIDOR 3306 para asegurarte de que el puerto 3306 está accesible. Si no se puede establecer la conexión, puede haber un bloqueo en el firewall o en el router.

Estas herramientas de diagnóstico ayudan a descartar problemas de red antes de revisar configuraciones del servidor MySQL o del gestor de bases de datos.

Solución de errores frecuentes al conectar remotamente

Durante la configuración del acceso externo a MySQL, pueden surgir errores comunes que impiden establecer una conexión satisfactoria. A continuación se detallan los fallos más habituales, sus causas y posibles soluciones.

“Access denied” o problemas de permisos

Este error suele deberse a una configuración incorrecta del usuario en MySQL. Puede estar relacionado con:

  • El usuario no tiene permisos para conectarse desde la IP externa (host diferente de localhost).
  • El comando GRANT no se ha ejecutado correctamente.
  • La contraseña introducida es incorrecta.

Para solucionarlo, verifica que el usuario ha sido creado con % o la IP concreta en el host, y que tiene permisos suficientes. Revisa los comandos SQL ejecutados y prueba nuevamente

Firewall o puerto bloqueado

Si el puerto 3306 no está abierto, el cliente no podrá establecer conexión, aunque el usuario esté bien configurado.

Para solucionarlo, comprueba la configuración del firewall del servidor (UFW, Firewalld, iptables) y del entorno donde se ejecuta MySQL. Asegúrate de que el puerto 3306 esté abierto para conexiones entrantes desde la IP del cliente.

El servidor no responde o no se resuelve la IP

Este error puede indicar que el servidor no está en línea o que el DNS no resuelve la dirección IP correctamente.

Para solucionarlo, asegúrate de que el servidor está encendido y accesible. Si usas un nombre de dominio, verifica su propagación DNS. También puedes probar con la IP directa en lugar del nombre de dominio.

Buenas prácticas de seguridad para el acceso remoto a MySQL

Permitir el acceso remoto a MySQL puede suponer un riesgo si no se siguen ciertas recomendaciones de seguridad. A continuación, se detallan buenas prácticas para proteger tus datos y servicios:

Limitar IPs autorizadas

Evita permitir conexiones desde cualquier IP (%). Es mucho más seguro limitar el acceso a una IP o a un rango específico mediante el comando GRANT. Por ejemplo:

GRANT ALL PRIVILEGES ON basededatos.* TO ‘usuario’@’192.168.1.10’ IDENTIFIED BY ‘password’;

Esto impide que actores externos ajenos accedan con credenciales robadas desde otros orígenes.

Cambiar el puerto de MySQL predeterminado

Aunque MySQL usa el puerto 3306 por defecto, cambiarlo reduce la exposición ante ataques automatizados.

Ejemplo: En mysqld.cnf, modifica: port = 4406

Recuerda abrir también el nuevo puerto en el firewall y especificarlo al conectarte desde el cliente.

Usar conexiones cifradas (SSL/TLS)

El uso de cifrado SSL entre el cliente y el servidor asegura que los datos transmitidos no puedan ser interceptados ni manipulados.

Para ello, configura certificados SSL en el servidor MySQL y activa la opción en el cliente gestor. Esto es especialmente relevante si los datos viajan por redes públicas.

Revisar logs de acceso y actividad del servidor

Es fundamental monitorear los archivos de log de MySQL y del sistema para detectar intentos fallidos de conexión, accesos no autorizados y otras anomalías.

  • MySQL logs: /var/log/mysql/error.log o definido en my.cnf
  • Logs de sistema: /var/log/auth.log, /var/log/syslog

Implementar un sistema de alertas puede ayudarte a actuar rápidamente ante intentos de intrusión.

Alternativas al acceso directo remoto

Si bien habilitar el acceso externo a MySQL es una solución directa, existen alternativas más seguras o controladas que pueden adaptarse mejor a ciertos entornos.

Crear túneles SSH

Un túnel SSH permite acceder al puerto 3306 del servidor a través de una conexión cifrada, sin necesidad de abrir el puerto al exterior.

Ejemplo de comando: ssh -L 3307:localhost:3306 usuario@ip_del_servidor

Luego puedes conectarte desde el cliente a localhost:3307.

API o capas intermedias para acceder a los datos

En lugar de acceder directamente a la base de datos, puedes crear una API REST o usar capas de backend (como PHP o Node.js) que interactúen con la base de datos. Así, los datos se exponen únicamente a través de endpoints controlados, limitando el riesgo de ataques SQL Injection o accesos indebidos.

VPN para acceso controlado a la red del servidor

Configurar una conexión VPN permite acceder a la red interna del servidor como si se estuviera físicamente dentro de ella. Esto proporciona una capa de seguridad adicional al restringir el acceso solo a dispositivos autorizados.

Herramientas como OpenVPN para Ubuntu, OpenVPN para macOS o WireGuard permiten implementar este tipo de soluciones en entornos profesionales.

Conclusión sobre el acceso externo a un servidor MySQL en Linux

Permitir el acceso externo a un servidor de MySQL en Linux puede facilitar enormemente el desarrollo remoto, la administración centralizada de bases de datos y el uso de herramientas gráficas avanzadas. Sin embargo, esta funcionalidad debe implementarse con precaución, siguiendo buenas prácticas de seguridad y asegurándose de que la configuración sea la adecuada tanto en el servidor como en el firewall y los usuarios MySQL.

Utilizar alternativas como túneles SSH, APIs intermedias o VPN puede ofrecer soluciones más seguras según el caso. Sea cual sea el método elegido, es fundamental comprender los riesgos asociados, validar la conectividad y mantener un monitoreo activo del sistema. Así se garantiza un acceso remoto eficaz, seguro y alineado con las necesidades del proyecto o la empresa.

Fernán García de Zúñiga

Productos relacionados: