Cómo permitir conexiones remotas a MySQL

Si está trabajando con una base de datos MySQL(MySQL database) , 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.

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. (MySQL)Si desea permitir conexiones remotas seguras a una base de datos MySQL , esto es lo que necesita saber.

Antes de que empieces(Before You Begin)

Antes de realizar cualquier cambio en su base de datos MySQL , es importante que haga una copia de seguridad de su base de datos(backup your database) , 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 su servidor le impidan acceder a él 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(hosted on a Raspberry Pi) .

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(Suppose) 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(Editing Your MySQL Configuration File)

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 .

  1. 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 (nano)MySQL esté en la ubicación predeterminada)

  1. Si está ejecutando Windows , abra el Explorador de archivos(File Explorer) 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 (p. ej., el Bloc(Notepad) de notas ) haciendo doble clic en la entrada. Si no está allí, cree el archivo primero(create the file first) .

  1. 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 instaló MySQL usando homebrew(using homebrew) .

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(Setting a Safe Bind-Address IP Range)

  1. 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(bind-address) 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 .

  1. 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(find your public IP address) 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.

  1. En algunas circunstancias, es posible que desee permitir todas(all) las conexiones remotas a una base de datos MySQL . Esto conlleva un riesgo extremo(extreme risk) 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 .

  1. Tome nota del valor del puerto(port ) en la sección Configuración básica(Basic Settings) . 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.

  1. Una vez que haya configurado la dirección de enlace(bind-address ) 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 Command + O y Command + XLos usuarios de Windows pueden guardar seleccionando Archivo(File ) > Guardar(Save) .

  1. 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(using sudo) (por ejemplo, sudo mysql.server restart ) y usar la ruta adecuada al archivo mysql.server (por ejemplo, /usr/local/bin/mysql.server ).

  1.  Si el comando anterior no funciona, intente sudo service mysql restart en su lugar.

  1. Para reiniciar MySQL en Windows , abra una nueva ventana de PowerShell haciendo clic con el botón derecho en el menú (PowerShell)Inicio(Start) y seleccionando Windows PowerShell (Administrador)(Windows PowerShell (Admin)) . 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.

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(Configuring Your Firewalls)

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(bind-address) 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(device or network firewall) .

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(Mac) están deshabilitados de forma predeterminada, por lo que no debería necesitar completar ningún paso adicional aquí.

Configurar cortafuegos de Linux(Configure Linux Firewalls)

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

  1. 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 (from)MySQL y reemplace YYYY con el valor de puerto correspondiente de su archivo de configuración de MySQL (p. ej., (MySQL)3306 ).

  1. 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.

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 la herramienta de repositorio de software de su distribución para instalarlo (por ejemplo, sudo apt install netfilter-persistent ).

Configurar cortafuegos de Windows(Configure Windows Firewalls)

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

  1. Haga clic derecho en(Right-click) el menú Inicio(Start) y seleccione Ejecutar(Run) .

  1. En el cuadro Ejecutar(Run) , escriba wf.msc y seleccione Aceptar(OK) .

  1. En la ventana de Windows Defender , seleccione (Windows Defender)Reglas de entrada(Inbound Rules ) > Nueva regla(New Rule) .

  1. En la ventana Asistente para nueva regla de entrada, seleccione (New Inbound Rule Wizard)Puerto(Port ) > Siguiente(Next) .

  1. 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 (MySQL)Siguiente(Next) .

  1. En el menú Acción(Action) , deje la opción predeterminada Permitir la conexión(Allow the connection) habilitada, luego seleccione Siguiente(Next) .

  1. Confirme que desea que la regla se aplique a todos los tipos de red, luego seleccione Siguiente(Next)

  1. Escriba un nombre descriptivo para la regla (por ejemplo, MySQL ) en el puerto provisto, luego seleccione Finalizar(Finish) para agregarlo a su lista de reglas de firewall.

Si tiene problemas para conectarse, repita estos pasos anteriores, asegurándose de crear una nueva regla de salida(outbound rule ) 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(open the necessary blocked ports) para permitir conexiones entrantes y salientes a su base de datos. 

Conexión a un servidor remoto mediante MySQL(Connecting to a Remote Server Using 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(MySQL is installed locally) antes de comenzar. Los usuarios de Mac(Mac) pueden instalar MySQL usando homebrew(using 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(Connecting to MySQL on Linux or Mac)

  1. Para conectarse a su servidor MySQL remoto en (MySQL)Mac o Linux , abra una nueva ventana de terminal y escriba mysql -u nombre de usuario -h XXXX:XXXX -p(mysql -u username -h X.X.X.X: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(username) con su nombre de usuario de MySQL.

  1. 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(Connecting to MySQL on Windows)

  1. Para conectarse a un servidor MySQL remoto en (MySQL)Windows , abra una nueva ventana de PowerShell haciendo clic con el botón derecho en el menú (PowerShell)Inicio(Start) y seleccionando Windows PowerShell (Administrador)(Windows PowerShell (Admin)) .

  1. En la nueva ventana de PowerShell, escriba cd “C:\Program Files\MySQL\MySQL 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.

  1. Desde allí, escriba .\mysql.exe -u username -h X.X.X.X: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(username) con un nombre de usuario de MySQL que permita el acceso remoto (como root ). Siga(Follow) las instrucciones adicionales en pantalla.
  2. 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.

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(Allowing Remote User Access to a MySQL Database)

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 (mysql)SSH remota o accediendo directamente a la PC o servidor que aloja el servidor.

  1. En su shell MySQL remoto (usando la herramienta mysql ), escriba (mysql)CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; y seleccione Entrar(Enter) . Reemplace el nombre de usuario(username ) con el nombre de usuario que desea crear, xxxx con la dirección IP desde la que desea conectarse y la contraseña(password) con una contraseña adecuada.

  1. Deberá otorgar a su nueva cuenta los permisos necesarios. Para hacer esto, escriba GRANT ALL ON databasename.* TO username@”x.x.x.x”; y reemplace el nombre de la base de datos, el nombre de usuario(databasename, username, ) y xxxx  con los detalles correctos. Si lo desea, reemplace el nombre de la base de datos(databasename) con * para otorgarle acceso a todas las bases de datos. 

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(mysql -u username -h X.X.X.X:XXXX -p) ).

Protección de los datos de su base de datos(Securing Your Database Data)

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(generate SSH keys for remote access) 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(back up your database) 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 un archivo Linux(automate a Linux file backup easily) . Si está ejecutando MySQL en Windows , puede configurar un sistema de respaldo automático similar para Windows(automatic backup system for Windows) , lo que le permite restaurar sus datos en caso de emergencia.



About the author

Ingeniero audiófilo y especialista en productos de audio con más de 10 años de experiencia. Me especializo en la creación de altavoces y auriculares para música de calidad de principio a fin. Soy un experto en la solución de problemas de audio, así como en el diseño de nuevos sistemas de altavoces y auriculares. Mi experiencia va más allá de hacer buenos productos; También me apasiona ayudar a otros a ser lo mejor posible, ya sea a través de la educación o el servicio comunitario.



Related posts