Configurar base de datos remota en MySQL


¿Qué es una conexión remota a MySQL?

Una conexión remota a MySQL permite que aplicaciones o herramientas se conecten a tu base de datos desde otro servidor o máquina, no solo desde el servidor local donde está instalado MySQL. Esto es útil para aplicaciones distribuidas, herramientas de gestión o backups remotos.


Requisitos previos

  • Acceso root o administrador al servidor MySQL
  • Conocer la IP del servidor que se conectará remotamente
  • Firewall configurado para permitir conexiones al puerto 3306 (puerto por defecto de MySQL)

Pasos para configurar conexión remota

1. Verificar configuración de MySQL

Primero, verificá si MySQL está configurado para aceptar conexiones remotas. Editá el archivo de configuración:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

O en algunas distribuciones:

sudo nano /etc/my.cnf

Buscá la línea bind-address y cambiála de:

bind-address = 127.0.0.1

A:

bind-address = 0.0.0.0

Esto permite que MySQL escuche en todas las interfaces de red.


2. Crear usuario con permisos remotos

Es recomendable crear un usuario específico para conexiones remotas en lugar de usar root:

mysql -u root -p
CREATE USER 'usuario_remoto'@'IP_DEL_CLIENTE' IDENTIFIED BY 'contraseña_segura';
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario_remoto'@'IP_DEL_CLIENTE';
FLUSH PRIVILEGES;
EXIT;

Para permitir conexiones desde cualquier IP (menos seguro, pero más flexible):

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

3. Configurar firewall

Si usás UFW en Ubuntu/Debian:

sudo ufw allow 3306/tcp
sudo ufw reload

Si usás firewalld en CentOS/RHEL:

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

Si usás iptables directamente:

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo iptables-save

4. Reiniciar MySQL

Después de cambiar la configuración, reiniciá MySQL:

sudo systemctl restart mysql

O en algunas distribuciones:

sudo systemctl restart mysqld

5. Verificar que MySQL escucha en todas las interfaces

Verificá que MySQL esté escuchando en el puerto 3306:

sudo netstat -tlnp | grep 3306

O con ss:

sudo ss -tlnp | grep 3306

Deberías ver algo como: 0.0.0.0:3306 o ::3306


6. Probar conexión remota

Desde el servidor cliente, probá la conexión:

mysql -h IP_DEL_SERVIDOR -u usuario_remoto -p

Si la conexión es exitosa, verás el prompt de MySQL.


Configuración de seguridad recomendada

  • Usa IPs específicas: En lugar de '%', especificá las IPs exactas que necesitan acceso.
  • Usa usuarios dedicados: No uses root para conexiones remotas.
  • Limita permisos: Otorgá solo los permisos necesarios, no ALL PRIVILEGES.
  • Usa contraseñas seguras: Contraseñas largas y complejas.
  • Considera SSL: Para conexiones remotas, es recomendable usar SSL.

Configurar SSL para conexiones remotas (opcional pero recomendado)

Para mayor seguridad, podés configurar SSL:

GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario_remoto'@'IP' REQUIRE SSL;
FLUSH PRIVILEGES;

Luego, al conectarte desde el cliente, usá:

mysql -h IP_SERVIDOR -u usuario -p --ssl-mode=REQUIRED

Problemas comunes

Error: "Can't connect to MySQL server"

  • Verificá que el firewall permita el puerto 3306.
  • Confirmá que bind-address esté configurado como 0.0.0.0.
  • Verificá que MySQL esté corriendo: sudo systemctl status mysql

Error: "Access denied"

  • Verificá que el usuario tenga permisos para conectarse desde esa IP.
  • Confirmá que la contraseña sea correcta.
  • Revisá los permisos del usuario: SHOW GRANTS FOR 'usuario'@'IP';

Conexión lenta

  • Verificá la latencia de red entre servidores.
  • Considerá usar una conexión VPN para mayor seguridad y rendimiento.

Deshabilitar conexiones remotas

Si necesitás deshabilitar las conexiones remotas por seguridad:

  1. Cambiá bind-address de vuelta a 127.0.0.1
  2. Eliminá o restringí los usuarios remotos
  3. Reiniciá MySQL
  4. Cerá el puerto 3306 en el firewall

¿Necesitás ayuda?

Si tenés problemas configurando conexiones remotas a MySQL, abrí un ticket desde el panel de billing.baires.host o contactanos por soporte.

También podés escribirnos por nuestras redes:

¿Fue útil la respuesta? 0 Los Usuarios han Encontrado Esto Útil (0 Votos)