¿Cómo Abrir el Puerto 3306 para Proveer Acceso Remoto a MySQL?

¿Cómo Abrir el Puerto 3306 para Proveer Acceso Remoto a MySQL?

Escrito por Felipe Bravo
Última actualización miércoles, oct 14, 2020

MySQL es sin dudas la solución de bases de datos más popular y utilizada en soluciones web. Este software da la posibilidad de acceder de forma remota a su shell, en este breve guía explicamos cómo abrir el puerto 3306 en su firewall para permitir las conexiones remotas a MySQL desde un agente externo.

Instrucciones

Nota: esta no es la forma más óptima ni segura de acceder a su base de datos, lo más simple es hacerlo desde el acceso SSH y ejecutar desde allí el ingreso a la línea de comandos de MySQL. Utilice esta opción solo si es estrictamente necesario (ejemplo: para testing) o especifique la dirección IP o la red remota desde donde se conectará a MySQL para filtrar el tráfico en el puerto abierto.

Nota: las instrucciones dispuestas aquí suponen que usted es un usuario regular con privilegios administrativos que le permiten el uso de sudo. Si ingresa con el usuario root simplemente obvie el uso de este prefijo.

  1. Inicie sesión vía SSH en su servidor usando las credenciales adecuadas.

  2. Para poder acceder a MySQL de forma remota, el primer paso que debe seguir es hacer un breve cambio en el archivo de configuración de MySQL. La ubicación de este dependerá de su distribución de Linux:

    • Debian/Ubuntu: el archivo estará ubicado en /etc/mysql/my.cnf.

    • CentOS/Fedora: el archivo se ubica en /etc/my.cnf.

  3. Una vez que halle el archivo en cuestión, debe editarlo, aquí tomamos como ejemplo que utilizamos un sistema con Ubuntu y la edición se hace con el editor de texto vi:

     sudo vi /etc/mysql/my.cnf
    
  4. Ahora tenemos que enlazar la dirección IP de nuestro servidor MySQL al archivo de configuración. Normalmente, la opción que permite esto está apuntando al localhost (127.0.0.1). Busque o agregue la siguiente línea dentro del archivo. Para hacerlo presione la tecla i para entrar al modo de inserción y pegue el contenido:

     bind-address=123.45.67.8
    

Recuerde remplazar 123.45.67.8 con la dirección IP real de su archivo.

  1. Verifique que la opción # skip-networking esté comentada (que tenga el signo numeral # al principio), si no lo está agregue el signo # para comentarla.

  2. Para guardar el archivo, presione ESC, escriba :wq y presione Enter.

  3. Ahora llegamos al momento de abrir el puerto 3306. Para hacerlo tenemos que añadir una regla en nuestro firewall a través de la tabla iptables. El siguiente comando abre el puerto 3306 a cualquier computador en el Internet:

     sudo iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
    

Sin embargo, recomendamos especificar la red o el equipo particular que se conectará a MySQL. Para eso, agregue el parámetro -s seguido de la dirección IP o segmento de red que se conectará a nuestras bases de datos. Por ejemplo, abramos el puerto para el segmento de red 99.88.77.0/24:

	sudo iptables -A INPUT -i eth0 -s 99.88.77.0/24 -p tcp --destination-port 3306 -j ACCEPT
  1. Una vez que agregue las reglas necesarias, reinicie el servicio:

     sudo service iptables save
    
  2. También tenemos que reiniciar el servicio MySQL. Use el siguiente comando para Debian o Ubuntu:

     sudo /etc/init.d/mysql restart
    

Si su sistema es CentOS, Fedora o RHEL:

	sudo /etc/init.d/mysqld restart
  1. ¡Felicidades, ha completado el proceso! Para comprobar que los cambios fueron exitosos, pruebe conectarse remotamente usando el siguiente comando:

    mysql -u administrador -h 123.45.67.8 -p
    

Sustituyendo la dirección IP del host (-h 123.45.67.8) con el valor real de su servidor MySQL.

Recursos adicionales

Para complementar la información aquí presentada puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tenga en cuenta que no podemos certificar su actualidad o precisión.

Base de datos

15 artículo en esta categoria.
Escrito por Felipe Bravo.