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

Configurar acceso remoto a MySQL en DirectAdmin

Actualizado el 17 de junio de 2026

¿Por qué necesitas acceso remoto a MySQL en DirectAdmin?

De forma predeterminada, MySQL en un servidor compartido (como el que usa DirectAdmin) solo acepta conexiones desde el mismo servidor. Esto significa que tu aplicación web y la base de datos están en la misma máquina. Sin embargo, hay varios escenarios donde necesitas conectarte a tu base de datos desde otro lugar:

  • Desarrollo local: Quieres trabajar con una copia de tu base de datos desde tu computadora (usando programas como MySQL Workbench, DBeaver o HeidiSQL).
  • Aplicaciones externas: Tienes una aplicación alojada en otro servidor (AWS, DigitalOcean, otro hosting) que necesita leer o escribir datos en tu base de datos.
  • Migraciones o backups: Necesitas importar o exportar datos de forma remota.
  • Equipos distribuidos: Varios desarrolladores necesitan acceder a la misma base de datos desde sus máquinas.

El problema: Si intentas conectarte directamente desde tu IP externa, recibirás un error como Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10061) o Connection refused. Esto es porque MySQL solo escucha en localhost (127.0.0.1).

La solución: Configurar el acceso remoto en DirectAdmin, lo que implica dos pasos principales: permitir que MySQL escuche en la IP pública y autorizar usuarios específicos para conexiones externas.


Paso 1: Verifica tu configuración actual de MySQL

Antes de hacer cambios, es importante saber cómo está configurado tu servidor MySQL. Accede a tu panel de DirectAdmin y luego a MySQL Management (o phpMyAdmin). También puedes conectarte por SSH si tienes acceso root, pero aquí asumimos que eres usuario de DirectAdmin.

1.1. Conéctate a MySQL desde la terminal (si tienes SSH)

Si tienes acceso SSH como usuario root, ejecuta:

mysql -u root -p

Luego, verifica la configuración actual:

SHOW VARIABLES LIKE 'bind_address';

Si el resultado es 127.0.0.1, significa que MySQL solo acepta conexiones locales.

1.2. Desde phpMyAdmin (para usuarios sin SSH)

En DirectAdmin, ve a phpMyAdmin y ejecuta esta consulta SQL:

SELECT user, host FROM mysql.user WHERE host <> 'localhost';

Si no ves ningún usuario con host % (que significa "cualquier host") o una IP específica, entonces no hay acceso remoto configurado.


Paso 2: Modifica la configuración de MySQL (bind-address)

El archivo de configuración principal de MySQL se encuentra en /etc/mysql/my.cnf o /etc/my.cnf (depende del sistema). En DirectAdmin, generalmente está en /etc/my.cnf.

2.1. Edita el archivo de configuración

Conéctate por SSH como root y abre el archivo con un editor (nano, vim):

nano /etc/my.cnf

Busca la línea que dice:

bind-address = 127.0.0.1

Cámbiala por:

bind-address = 0.0.0.0

Esto le dice a MySQL que escuche en todas las interfaces de red (IPs del servidor). Si solo quieres permitir una IP específica, pon esa IP en lugar de 0.0.0.0 (por ejemplo, bind-address = 192.168.1.100).

IMPORTANTE: Si tu servidor tiene un firewall (como iptables o CSF), también deberás abrir el puerto 3306 (MySQL) para la IP de destino. Más adelante veremos esto.

2.2. Reinicia MySQL

Guarda el archivo y reinicia el servicio MySQL:

systemctl restart mysql

O si usas service:

service mysql restart

Paso 3: Crea un usuario con acceso remoto

Ahora necesitas un usuario de MySQL que pueda conectarse desde una IP externa. No uses el usuario root por seguridad; crea uno nuevo.

3.1. Desde phpMyAdmin

  1. Ve a phpMyAdmin en DirectAdmin.
  2. Selecciona la pestaña Privilegios (o User accounts).
  3. Haz clic en Añadir usuario.
  4. Completa:
    • Nombre de usuario: tu_usuario_remoto
    • Host: % (permite cualquier IP) o una IP específica (ej: 192.168.1.50).
    • Contraseña: segura.
  5. Marca los permisos que necesites (SELECT, INSERT, UPDATE, DELETE, etc.). Para desarrollo, suele bastar con todos los privilegios sobre la base de datos específica.
  6. Guarda.

3.2. Desde la línea de comandos (SSH)

Ejecuta:

CREATE USER 'tu_usuario_remoto'@'%' IDENTIFIED BY 'contraseña_segura';
GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario_remoto'@'%';
FLUSH PRIVILEGES;

Reemplaza % por la IP específica si quieres mayor seguridad.


Paso 4: Abre el puerto 3306 en el firewall

DirectAdmin suele usar CSF (ConfigServer Security & Firewall) o iptables. Debes permitir el tráfico entrante al puerto 3306 desde tu IP.

4.1. Si usas CSF (recomendado)

  1. Accede por SSH como root.
  2. Edita /etc/csf/csf.conf:
    nano /etc/csf/csf.conf
    
  3. Busca la línea TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077,2078,2082,2083,2086,2087,2095,2096,2222,3306"
    Asegúrate de que 3306 esté incluido. Si no, agrégalo.
  4. Para limitar a tu IP, busca TCP_IN = "..." y reemplaza el puerto 3306 por 3306(tu_IP). Ejemplo: 3306(192.168.1.50).
  5. Guarda y reinicia CSF:
    csf -r
    

4.2. Si usas iptables

Ejecuta:

iptables -A INPUT -p tcp --dport 3306 -s TU_IP --jump ACCEPT
service iptables save

Reemplaza TU_IP por tu dirección IP pública (puedes obtenerla en whatismyip.com).


Paso 5: Prueba la conexión remota

Desde tu computadora local (o desde otro servidor), usa un cliente MySQL para probar.

5.1. Desde la línea de comandos

mysql -h IP_DEL_SERVIDOR -u tu_usuario_remoto -p

Te pedirá la contraseña. Si todo está bien, entrarás al monitor de MySQL.

5.2. Desde MySQL Workbench

  1. Crea una nueva conexión.
  2. Hostname: IP del servidor.
  3. Port: 3306.
  4. Username: tu_usuario_remoto.
  5. Password: la que configuraste.
  6. Prueba la conexión.

Posibles errores comunes:

  • Can't connect to MySQL server on ... (10061): El firewall bloquea el puerto o MySQL no está escuchando en 0.0.0.0.
  • Access denied for user ...: El usuario no tiene permisos para esa IP o la contraseña es incorrecta.
  • Host '...' is not allowed to connect to this MySQL server: El host % no está configurado correctamente.

Consideraciones de seguridad importantes

Permitir acceso remoto a MySQL es un riesgo si no se hace con cuidado. Sigue estas mejores prácticas:

  • Usa usuarios específicos: No uses root para conexiones remotas.
  • Limita por IP: En lugar de %, usa una IP fija. Por ejemplo, si trabajas desde casa, usa la IP de tu router (aunque cambie, puedes usar un servicio como No-IP).
  • Usa SSH Tunneling (recomendado): En lugar de abrir el puerto 3306, puedes crear un túnel SSH. Es más seguro. Ejemplo:
    ssh -L 3307:localhost:3306 usuario@tu_servidor
    
    Luego te conectas a localhost:3307 desde tu cliente MySQL.
  • Cambia el puerto por defecto: Si es posible, configura MySQL en un puerto no estándar (ej: 3307) y solo permite ese puerto en el firewall.
  • Usa SSL/TLS: Si tu versión de MySQL lo soporta, habilita conexiones cifradas.

Preguntas frecuentes (FAQ)

¿Por qué no puedo conectarme aunque seguí todos los pasos?

Revisa:

  • El firewall del servidor (CSF, iptables, etc.) está bloqueando el puerto 3306.
  • MySQL no se ha reiniciado después de cambiar bind-address.
  • El usuario tiene el host incorrecto (usa % o la IP exacta).
  • Tu IP pública ha cambiado (si usaste una IP fija).

¿Es seguro tener MySQL expuesto a Internet?

No es recomendable. Si necesitas acceso remoto, usa SSH Tunneling o una VPN. Si es estrictamente necesario, limita el acceso a solo tu IP y usa contraseñas fuertes.

¿Qué hago si mi IP cambia constantemente?

Puedes usar un servicio DDNS (como No-IP) y en el firewall permitir el nombre de dominio en lugar de la IP. Otra opción es usar un túnel SSH desde tu máquina local.

¿Cómo revoco el acceso remoto para un usuario?

Ejecuta en MySQL:

DROP USER 'tu_usuario_remoto'@'%';

O modifica el host a localhost:

RENAME USER 'tu_usuario_remoto'@'%' TO 'tu_usuario_remoto'@'localhost';

¿DirectAdmin tiene alguna herramienta gráfica para esto?

Sí, en DirectAdmin ve a MySQL Management y luego a Remote MySQL. Allí puedes agregar hosts permitidos (IPs) sin necesidad de editar archivos manualmente. Sin embargo, esto solo funciona si ya has configurado bind-address = 0.0.0.0 y el firewall está abierto.


Conclusión

Configurar acceso remoto a MySQL en DirectAdmin es un proceso sencillo pero que requiere cuidado. Los pasos clave son: habilitar bind-address, crear un usuario con host adecuado y abrir el puerto en el firewall. Siempre prioriza la seguridad usando IPs específicas y SSH Tunneling si es posible.

Recuerda que, si en algún momento usas Syspanel (antes conocido como HestiaCP), el proceso es similar, pero el puerto de acceso al panel es el 2106. En ese caso, la configuración de MySQL se maneja desde la terminal o desde el propio panel.

¿Tienes dudas? Revisa la documentación de DirectAdmin o contacta a tu proveedor de hosting. ¡Buena suerte con tu configuración!

¿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