¿Cómo permitir conexiones remotas a MySQL? - 3 - octubre 14, 2022

¿Cómo permitir conexiones remotas a MySQL?

Si está trabajando con una base de datos MySQL, entonces ya conoce los desafíos que enfrenta para mantener su base de datos segura. Desde intentos de piratería de bases de datos mediante inyecciones de SQL hasta ataques de fuerza bruta, es difícil mantener sus datos seguros, especialmente si está trabajando con una base de datos de forma remota.

¿Cómo permitir conexiones remotas a MySQL? - 5 - octubre 14, 2022

Hay formas de configurar un servidor SQL para permitir conexiones remotas, pero debe tener cuidado, ya que permitir conexiones remotas en un servidor MySQL puede hacer que su base de datos sea un objetivo fácil para los piratas informáticos. Si desea permitir conexiones remotas seguras a una base de datos MySQL, esto es lo que necesita saber.

Antes de que empieces

Antes de realizar cualquier cambio en su base de datos MySQL, es importante que haga una copia de seguridad de su base de datos, especialmente si está trabajando en un servidor de producción (un servidor en uso activo). Cualquier cambio que realice en su base de datos, o en el servidor que la aloja, podría provocar una pérdida grave de datos si algo sale mal.

También es posible que los cambios en las conexiones de sus servidores le impidan acceder a ellos posteriormente. Si esto sucede, es posible que deba consultar con un administrador del servidor para obtener más ayuda. Una buena idea es probar cualquier cambio en un servidor MySQL ejecutado localmente para comprobar si los cambios funcionan antes de probarlos de forma remota.

También es probable que si está realizando cambios en un servidor remoto, necesitará una forma segura de conectarse y realizar cambios. SSH (Secure Shell) suele ser la mejor manera de hacer esto, ya que le permite conectarse a su servidor remoto. También puede usar SSH para conectarse a servidores en su red local, como los alojados en una Raspberry Pi.

¿Cómo permitir conexiones remotas a MySQL? - 7 - octubre 14, 2022

Esta guía lo guiará a través de los pasos para configurar MySQL para permitir conexiones remotas, pero primero deberá asegurarse de tener acceso directo o remoto al servidor que aloja su servidor MySQL.

Suponga que no tiene acceso remoto a su servidor a través de SSH (por ejemplo). En ese caso, no podrá configurar su base de datos MySQL para permitir conexiones remotas directamente a menos que su cuenta mySQL raíz ya permita conexiones remotas. Por lo tanto, primero deberá establecer esta conexión antes de poder continuar.

Edición de su archivo de configuración de MySQL

El primer paso para configurar MySQL para permitir conexiones remotas es editar su archivo de configuración de MySQL. En esta etapa, esta guía asumirá que ya se ha conectado al servidor, PC o Mac que aloja su base de datos mySQL de forma remota y tiene acceso a la consola.

Alternativamente, puede configurar un servidor MySQL local usando una terminal abierta en Mac o Linux o un editor de texto en Windows.

  • Para comenzar, use su editor de texto de consola preferido para editar su archivo de base de datos MySQL. En Linux, escriba sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf en una terminal o ventana SSH para editar este archivo usando el editor nano (suponiendo que su base de datos MySQL esté en la ubicación predeterminada).
¿Cómo permitir conexiones remotas a MySQL? - 9 - octubre 14, 2022
  • Si está ejecutando Windows, abra el Explorador de archivos y acceda a la carpeta que contiene su instalación de MySQL (por ejemplo, C:/Program Files/MySQL/MySQL Server 8.0). Abra el archivo my.ini utilizando su editor de texto predeterminado (por ejemplo, el Bloc de notas) haciendo doble clic en la entrada. Si no está allí, cree el archivo primero.
¿Cómo permitir conexiones remotas a MySQL? - 11 - octubre 14, 2022
  • En Mac, abra una ventana de terminal y escriba sudo nano /usr/local/etc/my.cnf. Este es el archivo de configuración predeterminado para MySQL si ha instalado MySQL usando homebrew.
¿Cómo permitir conexiones remotas a MySQL? - 13 - octubre 14, 2022

Las ubicaciones a las que se hace referencia anteriormente son las ubicaciones predeterminadas para los archivos de configuración de MySQL. Si estos comandos no funcionan, deberá buscar los archivos relevantes ( my.cnf, mysqld.cnf o my.ini ) manualmente para ubicar la ruta del archivo correspondiente.

Configuración de un rango de direcciones IP de enlace seguro

  • Una vez que haya abierto el archivo de configuración de MySQL para su servidor, use la tecla de flecha de su teclado para llegar a la sección de dirección de enlace del archivo. Este rango de IP limita las conexiones a su base de datos, que generalmente está configurada para permitir solo conexiones desde la máquina local o el servidor usando 127.0.0.1.
¿Cómo permitir conexiones remotas a MySQL? - 15 - octubre 14, 2022
  • Si desea configurar su base de datos MySQL para permitir conexiones desde dispositivos que utilizan su conexión a Internet actual, primero busque su dirección IP pública y luego reemplace 127.0.0.1 con esa dirección IP. Alternativamente, reemplácelo con una dirección IP para el dispositivo o servidor desde el que desea permitir las conexiones.
¿Cómo permitir conexiones remotas a MySQL? - 17 - octubre 14, 2022
  • En algunas circunstancias, es posible que desee permitir todas las conexiones remotas a una base de datos MySQL. Esto conlleva un riesgo extremo y no debe usarse en un servidor de producción. Sin embargo, si desea permitir esto, reemplace 127.0.0.1 con 0.0.0.0 .
¿Cómo permitir conexiones remotas a MySQL? - 19 - octubre 14, 2022
  • Tome nota del valor del puerto en la sección Configuración básica. Esto será requerido en la siguiente sección. Si no está visible, se utilizará el valor predeterminado, que es el puerto 3306. Puede agregar su propio puerto escribiendo port = xxxx en una nueva línea, reemplazando xxxx con un valor de puerto adecuado.
¿Cómo permitir conexiones remotas a MySQL? - 21 - octubre 14, 2022
  • Una vez que haya configurado la dirección de enlace en su archivo de configuración de MySQL, guarde el archivo. Si está en Linux, seleccione Ctrl + O y Ctrl + X para hacer esto. En Mac, seleccione Comando + O y Comando + X. Los usuarios de Windows pueden guardar seleccionando Archivo > Guardar.
¿Cómo permitir conexiones remotas a MySQL? - 23 - octubre 14, 2022
  • A continuación, los usuarios de Linux y Mac pueden reiniciar MySQL escribiendo mysql.server stop && mysql.server start o mysql.server restart . Es posible que deba elevar el comando usando sudo (por ejemplo, sudo mysql.server restart) y usar la ruta adecuada al archivo mysql.server (por ejemplo, /usr/local/bin/mysql.server).
¿Cómo permitir conexiones remotas a MySQL? - 25 - octubre 14, 2022
  • Si el comando anterior no funciona, intente sudo service mysql restart en su lugar.
¿Cómo permitir conexiones remotas a MySQL? - 27 - octubre 14, 2022
  • Para reiniciar MySQL en Windows, abra una nueva ventana de PowerShell haciendo clic con el botón derecho en el menú Inicio y seleccionando Windows PowerShell (Administrador) . En la ventana de PowerShell, escriba net stop mysql80 seguido de net start mysql80, reemplazando mysql80 con el nombre de servicio correcto en su PC.
¿Cómo permitir conexiones remotas a MySQL? - 29 - octubre 14, 2022

Si no está seguro del nombre de servicio correcto en Windows, escriba net start para encontrarlo. Si no puede volver a cargar su configuración, reinicie su servidor y vuelva a cargar MySQL manualmente (si es necesario).

Configuración de sus cortafuegos

En esta etapa, su base de datos MySQL debería permitir conexiones remotas desde dispositivos que utilicen la dirección IP que estableció como valor de dirección de enlace en su archivo de configuración de MySQL (o desde todos los dispositivos si establece este valor en 0.0.0.0). Sin embargo, las conexiones seguirán siendo bloqueadas por su dispositivo o firewall de red.

La mayoría de los servidores y PC usan un firewall para bloquear las conexiones a menos que se otorgue acceso a un puerto específico. Los pasos para configurar esto variarán, dependiendo de si está ejecutando MySQL en Windows o Linux. Los cortafuegos de Mac están deshabilitados de forma predeterminada, por lo que no debería necesitar completar ningún paso adicional aquí.

Configurar cortafuegos de Linux

Muchos servidores Linux usan iptables como la utilidad de firewall predeterminada. Puede configurarlo siguiendo los pasos a continuación.

  • Abra una terminal o conexión SSH y escriba sudo iptables -A INPUT -p tcp -s XXXX dport YYYY -j ACCEPT . Reemplace XXXX con la dirección IP del dispositivo desde el que desea permitir las conexiones de MySQL y reemplace YYYY con el valor de puerto correspondiente de su archivo de configuración de MySQL (p. ej., 3306).
¿Cómo permitir conexiones remotas a MySQL? - 31 - octubre 14, 2022
  • Esto configurará el firewall temporalmente. Si está utilizando un servidor Linux basado en Debian o Ubuntu, haga que este cambio sea permanente escribiendo sudo netfilter-persistent save y sudo netfilter-persistent reload en la terminal o en la ventana SSH.
¿Cómo permitir conexiones remotas a MySQL? - 33 - octubre 14, 2022

Si iptables no es la herramienta de firewall predeterminada para su distribución de Linux, deberá consultar el manual de usuario de su distribución para obtener más información. Si ciertos paquetes (como netfilter-persistent) no están disponibles, use su herramienta de repositorio de software de distribución para instalarlo (por ejemplo, sudo apt install netfilter-persistent).

Configurar cortafuegos de Windows

Si está utilizando una PC con Windows o un servidor para alojar su base de datos, puede configurar su firewall siguiendo estos pasos:

  • Haga clic derecho en el menú Inicio y seleccione Ejecutar.
¿Cómo permitir conexiones remotas a MySQL? - 35 - octubre 14, 2022
  • En el cuadro Ejecutar, escriba wf.msc y seleccione Aceptar.
¿Cómo permitir conexiones remotas a MySQL? - 37 - octubre 14, 2022
  • En la ventana de Windows Defender, seleccione Reglas de entrada > Nueva regla.
¿Cómo permitir conexiones remotas a MySQL? - 39 - octubre 14, 2022
  • En la ventana Asistente para nueva regla de entrada, seleccione Puerto > Siguiente.
¿Cómo permitir conexiones remotas a MySQL? - 41 - octubre 14, 2022
  • En el siguiente menú, seleccione TCP de las opciones, escriba 3306 (o cualquier valor de puerto que aparezca en su archivo de configuración de MySQL), luego seleccione Siguiente.
¿Cómo permitir conexiones remotas a MySQL? - 43 - octubre 14, 2022
  • En el menú Acción, deje la opción predeterminada Permitir la conexión habilitada, luego seleccione Siguiente.
¿Cómo permitir conexiones remotas a MySQL? - 45 - octubre 14, 2022
  • Confirme que desea que la regla se aplique a todos los tipos de red, luego seleccione Siguiente.
¿Cómo permitir conexiones remotas a MySQL? - 47 - octubre 14, 2022
  • Escriba un nombre descriptivo para la regla (por ejemplo, MySQL) en el puerto provisto, luego seleccione Finalizar para agregarlo a su lista de reglas de firewall.
¿Cómo permitir conexiones remotas a MySQL? - 49 - octubre 14, 2022

Si tiene problemas para conectarse, repita estos pasos anteriores, asegurándose de crear una nueva regla de salida en la configuración de su firewall usando los mismos detalles (puerto 3306, etc.). También es posible que deba configurar su enrutador de red local para abrir los puertos bloqueados necesarios para permitir conexiones entrantes y salientes a su base de datos.

Conexión a un servidor remoto mediante MySQL

Después de configurar su base de datos MySQL para permitir conexiones remotas, deberá establecer una conexión con ella. Puede hacerlo usando el comando mysql ( mysql.exe en Windows) desde una terminal o ventana de PowerShell.

Si está ejecutando Windows, deberá asegurarse de que MySQL esté instalado localmente antes de comenzar. Los usuarios de Mac pueden instalar MySQL usando homebrew desde la terminal ( brew install mysql ), mientras que los usuarios de Linux pueden usar su repositorio de aplicaciones local (por ejemplo, sudo apt install mysql ) para instalar los paquetes necesarios.

Conexión a MySQL en Linux o Mac

  • Para conectarse a su servidor MySQL remoto en Mac o Linux, abra una nueva ventana de terminal y escriba mysql -u nombre de usuario -h XXXX:XXXX -p . Reemplace XXXX: XXXX con la dirección IP y el número de puerto de su servidor remoto (p. ej., 100.200.100.200:3306) y el nombre de usuario con su nombre de usuario de MySQL.
¿Cómo permitir conexiones remotas a MySQL? - 51 - octubre 14, 2022
  • Cuando se le solicite, confirme su contraseña. Si la conexión es exitosa, aparecerá un mensaje de éxito en la terminal.

Conexión a MySQL en Windows

  • Para conectarse a un servidor MySQL remoto en Windows, abra una nueva ventana de PowerShell haciendo clic con el botón derecho en el menú Inicio y seleccionando Windows PowerShell (Administrador) .
¿Cómo permitir conexiones remotas a MySQL? - 53 - octubre 14, 2022
  • En la nueva ventana de PowerShell, escriba cd C:Program FilesMySQLMySQL Workbench 8.0 para ingresar a la carpeta correcta, reemplazando este directorio con el directorio de instalación correcto en su PC. Por ejemplo, si su versión de MySQL es 8.0.1, use la carpeta MySQL Workbench 8.0.1 en su lugar.
¿Cómo permitir conexiones remotas a MySQL? - 55 - octubre 14, 2022
  • Desde allí, escriba .mysql.exe -u nombre de usuario -h XXXX:XXXX -p . Reemplace XXXX: XXXX con la dirección IP y el número de puerto de su servidor remoto (por ejemplo, 100.200.100.200:3306) y el nombre de usuario con un nombre de usuario de MySQL que permita el acceso remoto (como root). Siga las instrucciones adicionales en pantalla.
  • Proporcione su contraseña, cuando se le solicite, para completar el proceso de inicio de sesión y acceder a su base de datos MySQL de forma remota.
¿Cómo permitir conexiones remotas a MySQL? - 57 - octubre 14, 2022

Si esto no funciona, conéctese al servidor o PC que aloja su servidor MySQL usando SSH (o acceda directamente) siguiendo estos pasos y usando el argumento -h localhost. A continuación, puede crear una cuenta de usuario adecuada siguiendo los pasos que se indican a continuación.

Permitir el acceso de usuarios remotos a una base de datos MySQL

En este punto, debería poder conectarse a su servidor MySQL de forma remota utilizando la cuenta de usuario raíz de su servidor u otra cuenta de usuario con privilegios elevados. Como este nivel de acceso no es seguro, es posible que prefiera crear una cuenta más restringida para acceder a su base de datos MySQL.

Esta cuenta tendrá acceso limitado a su servidor MySQL, lo que le permitirá interactuar solo con bases de datos seleccionadas. No podrá realizar cambios más serios, como acceder a otros datos de la base de datos, crear nuevas cuentas de usuario, etc.

Deberá tener la capacidad de iniciar sesión en su servidor MySQL de forma remota. Si no puede usar su cuenta raíz de forma remota, deberá acceder al shell de su servidor usando el comando mysql a través de una conexión SSH remota o accediendo directamente a la PC o al servidor que aloja el servidor.

  • En su shell MySQL remoto (usando la herramienta mysql), escriba CREAR USUARIO usuario@xxxx IDENTIFICADO POR contraseña; y seleccione Entrar. Reemplace el nombre de usuario con el nombre de usuario que desea crear, xxxx con la dirección IP desde la que desea conectarse y la contraseña con una contraseña adecuada.
¿Cómo permitir conexiones remotas a MySQL? - 59 - octubre 14, 2022
  • Deberá otorgar a su nueva cuenta los permisos necesarios. Para hacer esto, escriba GRANT ALL ON nombre de la base de datos.* TO nombredeusuario@xxxx; y reemplace el nombre de la base de datos, el nombre de usuario y xxxx con los detalles correctos. Si lo desea, reemplace el nombre de la base de datos con * para otorgarle acceso a todas las bases de datos.
¿Cómo permitir conexiones remotas a MySQL? - 61 - octubre 14, 2022

Con el acceso otorgado, siga los pasos de la sección anterior para conectarse a su servidor de forma remota utilizando su nueva cuenta (por ejemplo, mysql -u nombre de usuario -h XXXX:XXXX -p ).

Protección de los datos de su base de datos

Ya sea que esté trabajando con MySQL u otro tipo de base de datos SQL, es importante mantener sus conexiones seguras para mantener la seguridad de sus datos. Una buena manera de hacer esto es generar claves SSH para el acceso remoto a su servidor, en lugar de confiar en contraseñas obsoletas (y fáciles de adivinar).

Si le preocupa la pérdida de datos, puede hacer una copia de seguridad de su base de datos en línea fácilmente. La mayoría de las bases de datos se ejecutan con servidores Linux; puede automatizar fácilmente una copia de seguridad de archivos de Linux. Si está ejecutando MySQL en Windows, puede configurar un sistema de respaldo automático similar para Windows, lo que le permite restaurar sus datos en caso de emergencia.