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

Configurar base de datos remota en DirectAdmin para aplicaciones

Actualizado el 4 de febrero de 2026

¿Necesitas que tu aplicación web (como WordPress, Laravel, o un CRM) se conecte a una base de datos MySQL que no está en el mismo servidor donde está alojada tu web? Esto es muy común cuando quieres separar la carga de trabajo, mejorar la seguridad o cuando tu aplicación está en un servidor y los datos en otro. En este artículo te guiaré paso a paso para configurar una base de datos remota en DirectAdmin de forma segura y sencilla. No necesitas ser un experto, solo seguir las instrucciones al pie de la letra.

Vamos a cubrir desde los conceptos básicos hasta la configuración final, con énfasis en la seguridad y las buenas prácticas. Al final, tendrás tu base de datos accesible desde cualquier servidor o aplicación autorizada.


¿Qué es una base de datos remota y por qué usarla?

Una base de datos remota es simplemente una base de datos MySQL que no está instalada en el mismo servidor que tu aplicación web. En lugar de tener todo en una sola máquina, separas el almacenamiento de datos en un servidor diferente (por ejemplo, un servidor dedicado a bases de datos o un servicio cloud).

Ventajas principales:

  • Escalabilidad: Puedes escalar el servidor de base de datos independientemente del servidor web.
  • Rendimiento: Al separar cargas, ambos servidores trabajan más eficientes.
  • Seguridad: Aíslas los datos sensibles en un servidor con acceso restringido.
  • Flexibilidad: Puedes conectar múltiples aplicaciones a la misma base de datos desde distintos servidores.

Sin embargo, configurar una conexión remota implica abrir puertos y gestionar permisos. DirectAdmin facilita este proceso con su panel de control. Vamos a verlo.


Requisitos previos antes de empezar

Antes de lanzarte a configurar, asegúrate de tener lo siguiente:

  • Acceso a DirectAdmin con permisos de administrador o usuario reseller.
  • Dos servidores: el servidor donde está DirectAdmin (que alojará la base de datos) y el servidor remoto (donde estará tu aplicación).
  • Dirección IP del servidor remoto: La IP pública del servidor que se conectará a la base de datos.
  • Conocimiento básico de MySQL (saber crear usuarios y bases de datos).
  • Firewall configurado: Asegúrate de que el puerto 3306 (MySQL) esté abierto en el servidor de DirectAdmin solo para la IP remota.

[WARNING] Nunca abras el puerto 3306 a todo el mundo (0.0.0.0/0). Esto expondría tu base de datos a ataques. Siempre limita el acceso a la IP específica de tu aplicación.


Paso 1: Crear la base de datos y el usuario en DirectAdmin

Primero, necesitas una base de datos y un usuario con permisos. En DirectAdmin, esto se hace desde el panel de MySQL Management.

  1. Inicia sesión en DirectAdmin.
  2. Ve a Account Manager > MySQL Management.
  3. Haz clic en Create new database.
  4. Completa los campos:
    • Database name: Por ejemplo, miapp_db.
    • Username: Por ejemplo, miapp_user.
    • Password: Usa una contraseña segura (mínimo 12 caracteres, con mayúsculas, números y símbolos).
  5. Haz clic en Create.

[TIP] DirectAdmin automáticamente crea la base de datos y asigna el usuario con todos los privilegios sobre ella. Anota el nombre de la base de datos, el usuario y la contraseña.

Ahora tienes la base de datos local en el servidor de DirectAdmin. Pero por defecto, solo se puede acceder desde el mismo servidor (localhost). Para hacerla remota, necesitas modificar los permisos.


Paso 2: Configurar permisos de acceso remoto en MySQL

Por defecto, MySQL solo permite conexiones desde localhost. Para que un servidor remoto pueda conectarse, debes crear un usuario que tenga permiso para conectarse desde una IP específica (o desde cualquier IP, lo cual no es recomendado).

Desde DirectAdmin (método visual)

  1. En MySQL Management, busca la base de datos que creaste.
  2. Haz clic en Manage junto a la base de datos.
  3. Verás la lista de usuarios. Busca el usuario que creaste (miapp_user).
  4. En la columna Host, verás localhost. Haz clic en el icono de editar (lápiz).
  5. Cambia localhost por la IP pública del servidor remoto (por ejemplo, 203.0.113.5).
  6. Haz clic en Save.

[INFO] Si no ves la opción de editar el host, puede que necesites usar la línea de comandos. DirectAdmin a veces no permite modificar el host de usuarios existentes. En ese caso, sigue el método manual.

Desde la línea de comandos (método avanzado)

Si prefieres usar SSH o si DirectAdmin no te permite cambiar el host, haz lo siguiente:

  1. Conéctate a tu servidor por SSH.

  2. Accede a MySQL como root:

    mysql -u root -p
    
  3. Introduce la contraseña de root de MySQL (la misma que usas en DirectAdmin).

  4. Ejecuta el siguiente comando para crear un nuevo usuario con acceso remoto (reemplaza valores):

    GRANT ALL PRIVILEGES ON miapp_db.* TO 'miapp_user'@'203.0.113.5' IDENTIFIED BY 'tu_contraseña_segura';
    FLUSH PRIVILEGES;
    
    • miapp_db es el nombre de tu base de datos.
    • miapp_user es el nombre de usuario.
    • 203.0.113.5 es la IP del servidor remoto.
    • tu_contraseña_segura es la contraseña que elegiste.
  5. Para verificar que el usuario tiene acceso remoto, ejecuta:

    SELECT user, host FROM mysql.user WHERE user = 'miapp_user';
    

    Deberías ver una línea con host = 203.0.113.5.

[WARNING] Si necesitas que varias IPs se conecten, repite el comando GRANT con cada IP. No uses % (cualquier IP) a menos que sea estrictamente necesario y tengas un firewall muy restrictivo.


Paso 3: Configurar MySQL para aceptar conexiones remotas

En el servidor de DirectAdmin, MySQL por defecto solo escucha en 127.0.0.1 (localhost). Debes cambiarlo para que escuche en la IP pública del servidor.

  1. Conéctate por SSH a tu servidor.
  2. Abre el archivo de configuración de MySQL (normalmente /etc/my.cnf o /etc/mysql/my.cnf):
    nano /etc/my.cnf
    
  3. Busca la línea que dice bind-address. Si no existe, agrégala en la sección [mysqld]:
    bind-address = 0.0.0.0
    
    • 0.0.0.0 significa que MySQL escuchará en todas las interfaces de red. Si solo quieres que escuche en una IP específica, pon esa IP (ej. 192.168.1.10).
  4. Guarda el archivo (Ctrl+O, luego Ctrl+X en nano).
  5. Reinicia MySQL:
    systemctl restart mysqld
    
    o
    service mysql restart
    

[TIP] Si no encuentras bind-address, también puedes comentar la línea con # para que MySQL escuche en todas las interfaces. Pero es más seguro especificar 0.0.0.0 y luego restringir por firewall.


Paso 4: Abrir el puerto 3306 en el firewall

Ahora que MySQL escucha en la red, debes permitir el tráfico entrante en el puerto 3306 desde la IP remota.

Si usas CSF (ConfigServer Security & Firewall) – común en DirectAdmin

  1. Edita el archivo de configuración de CSF:
    nano /etc/csf/csf.conf
    
  2. Busca la línea TCP_IN y agrega el puerto 3306 si no está:
    TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077,2078,2082,2083,2086,2087,2095,2096,3306"
    
  3. Guarda el archivo.
  4. Luego, agrega una regla para permitir solo la IP remota:
    csf -a 203.0.113.5
    
    Esto agrega la IP a la lista blanca.
  5. Recarga CSF:
    csf -r
    

Si usas UFW (Uncomplicated Firewall)

ufw allow from 203.0.113.5 to any port 3306
ufw reload

[WARNING] Nunca ejecutes ufw allow 3306 sin especificar una IP. Esto abriría el puerto a todo internet.


Paso 5: Conectar desde la aplicación remota

Ya tienes la base de datos lista para recibir conexiones remotas. Ahora, desde tu aplicación (por ejemplo, WordPress o Laravel), configura los parámetros de conexión:

  • Host: La IP pública del servidor de DirectAdmin (ej. 192.0.2.1).
  • Database name: miapp_db
  • Username: miapp_user
  • Password: tu_contraseña_segura
  • Port: 3306 (por defecto)

Ejemplo en WordPress (wp-config.php)

define('DB_NAME', 'miapp_db');
define('DB_USER', 'miapp_user');
define('DB_PASSWORD', 'tu_contraseña_segura');
define('DB_HOST', '192.0.2.1');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

Ejemplo en Laravel (.env)

DB_CONNECTION=mysql
DB_HOST=192.0.2.1
DB_PORT=3306
DB_DATABASE=miapp_db
DB_USERNAME=miapp_user
DB_PASSWORD=tu_contraseña_segura

[TIP] Si tu aplicación está en otro proveedor (como AWS, DigitalOcean), asegúrate de que su firewall también permita conexiones salientes al puerto 3306 de tu servidor.


Paso 6: Probar la conexión remota

Para verificar que todo funciona, desde el servidor remoto (donde está tu aplicación) ejecuta:

mysql -h 192.0.2.1 -u miapp_user -p

Te pedirá la contraseña. Si todo está bien, accederás al monitor de MySQL. Si recibes un error como Can't connect to MySQL server, revisa:

  • Que el puerto 3306 esté abierto en el firewall del servidor de DirectAdmin.
  • Que el usuario tenga permiso para conectarse desde esa IP.
  • Que MySQL esté escuchando en la interfaz correcta (bind-address).

Seguridad adicional: Buenas prácticas

Configurar una base de datos remota implica riesgos. Sigue estas recomendaciones para mantener tus datos seguros:

  1. Usa contraseñas fuertes: Mínimo 16 caracteres, con mayúsculas, minúsculas, números y símbolos.
  2. Limita el acceso por IP: Solo permite las IPs estrictamente necesarias.
  3. Usa SSH Túnel (recomendado): En lugar de exponer MySQL directamente, puedes crear un túnel SSH. Así, la conexión va cifrada y no necesitas abrir puertos.
  4. Cambia el puerto por defecto: En lugar de 3306, usa un puerto no estándar (ej. 3307) para reducir escaneos automáticos.
  5. Monitorea los logs: Revisa /var/log/mysql/error.log y los logs de DirectAdmin para detectar intentos de acceso no autorizados.
  6. Actualiza regularmente: Mantén MySQL y DirectAdmin actualizados para evitar vulnerabilidades conocidas.

[INFO] Si usas Syspanel (anteriormente HestiaCP), el proceso es similar, pero el acceso al panel es a través del puerto 2106. En Syspanel, la gestión de bases de datos se hace desde la sección "Bases de datos" y los pasos para crear usuarios remotos son análogos.


Preguntas frecuentes (FAQ)

¿Puedo conectar varias aplicaciones a la misma base de datos remota?

Sí, solo necesitas crear usuarios con diferentes IPs o usar un mismo usuario con acceso desde varias IPs (separadas por comas en el GRANT). Sin embargo, es más seguro crear un usuario por aplicación.

¿Qué hago si mi IP cambia dinámicamente?

Puedes usar un servicio de DNS dinámico (como No-IP) y en lugar de la IP, usar el nombre de host en el GRANT. Ejemplo: GRANT ... TO 'user'@'midominio.ddns.net'.

¿Cómo revoco el acceso a una IP?

Ejecuta en MySQL:

DROP USER 'miapp_user'@'203.0.113.5';
FLUSH PRIVILEGES;

¿Es seguro usar % para cualquier IP?

No, a menos que tengas un firewall muy restrictivo o uses un túnel VPN. Siempre especifica IPs concretas.

¿Puedo usar SSL para la conexión remota?

Sí, MySQL soporta conexiones SSL. Debes configurar certificados en ambos lados. Es una capa extra de seguridad.


Conclusión

Configurar una base de datos remota en DirectAdmin no es complicado si sigues los pasos correctos. Lo más importante es la seguridad: limita el acceso por IP, usa contraseñas fuertes y mantén el firewall ajustado. Con esta guía, podrás separar tu aplicación de tus datos, mejorando el rendimiento y la escalabilidad de tu proyecto.

Recuerda que si usas Syspanel, el proceso es casi idéntico, solo cambia el puerto de acceso al panel (2106). Y si en algún momento tienes dudas, prueba la conexión desde la línea de comandos para diagnosticar problemas.

¡Ahora ya puedes conectar tu aplicación a una base de datos remota de forma segura y profesional!

¿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