Cómo permitir conexiones remotas a MySQL


Si está trabajando con un Base de datos MySQL, entonces ya conoce los desafíos que enfrenta para mantener segura su base de datos. Desde intentos de piratería de bases de datos utilizando 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. Si desea permitir conexiones remotas y seguras a una base de datos MySQL, esto es lo que necesita saber.

Tabla de contenido

    Antes que usted Comenzar

    Antes de realizar cambios 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 resultar en una pérdida grave de datos si algo sale mal.

    También puede encontrar que los cambios en las conexiones de su servidor pueden impedirle 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 verificar si sus 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)es a menudo 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 alojado en una 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 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 raíz mySQL ya permita conexiones remotas. Por lo tanto, primero deberá establecer esta conexión antes de poder continuar.

    Editando su archivo de configuración de MySQL

    El primer paso para configurar MySQL para permitir connections 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.cnfen una ventana de terminal o SSH para editar este archivo con el editor nano(asumiendo su base de datos MySQL está en la ubicación predeterminada) .
      1. Si está ejecutando Windows, abra el Explorador de archivos y acceda a la carpeta que contiene su instalación de MySQL (por ejemplo, C: / Archivos de programa / MySQL / MySQL Server 8.0). Abra el archivo my.inicon su editor de texto predeterminado (por ejemplo, Bloc de notas) haciendo doble clic en la entrada. Si no está allí, crea el archivo primero.
        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 ha instalado MySQL usando homebrew.
        2. Las ubicaciones mencionadas anteriormente son las ubicaciones predeterminadas para archivos de configuración de MySQL. Si estos comandos no funcionan, deberá buscar los archivos relevantes (my.cnf, mysqld.cnfo my.ini) manualmente para localizar la ruta del archivo relevante.

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

          1. Una vez que Si has abierto el archivo de configuración de MySQL para tu servidor, usa la tecla de flecha del teclado para llegar a la sección bind-addressdel 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 o servidor local 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, encuentra tu dirección IP pública primero, luego reemplace 127.0.0.1con esa dirección IP. Alternativamente, reemplácelo con una dirección IP para el dispositivo o servidor desde el que desea permitir conexiones.
              1. En algunas circunstancias , es posible que desee permitir todaslas conexiones remotas a una base de datos MySQL. Esto conlleva un riesgo extremoy no debe utilizarse en un servidor de producción. Sin embargo, si desea permitir esto, reemplace 127.0.0.1por 0.0.0.0
                1. Anote el valor del puertoen la sección Configuración básica. Esto será necesario 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 = xxxxen una nueva línea, reemplazando xxxxcon un valor de puerto adecuado.
                  1. Una vez que haya configurado la dirección de enlaceen su archivo de configuración MySQL, guarde el archivo. Si está en Linux, seleccione Ctrl + Oy Ctrl + Xpara hacer esto. En Mac, seleccione Comando + Oy Comando + X. Los usuarios de Windows pueden guardar seleccionando Archivo>Guardar
                    1. A continuación, los usuarios de Linux y Mac pueden reiniciar MySQL escribiendo mysql.server stop && mysql.server starto 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).
                    1. Si el comando anterior no funciona, intente sudo service mysql restarten su lugar .
                      1. 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 (Admin). En la ventana de PowerShell, escriba net stop mysql80seguido de net start mysql80, reemplazando mysql80con el nombre de servicio correcto en su PC.
                      2. Si no está seguro del nombre correcto del servicio en Windows, escriba net startpara encontrarlo. Si no puede volver a cargar su configuración, reinicie su servidor y vuelva a cargar MySQL manualmente (si es necesario) en su lugar.

                        Configuración de sus firewalls

                        En esta etapa, su base de datos MySQL debe permitir conexiones remotas desde dispositivos que utilicen la dirección IP que estableció como el valor de bind-addressen su archivo de configuración de MySQL (o desde todos los dispositivos si establece este valor en 0.0.0.0en su lugar). Sin embargo, el cortafuegos de red o dispositivoseguirá bloqueando las conexiones.

                        La mayoría de los servidores y PC utilizan un cortafuegos 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 desactivados de forma predeterminada, por lo que no debería necesitar realizar ningún paso adicional aquí.

                        Configurar los cortafuegos de Linux

                        Muchos servidores Linux utilizan iptablescomo 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. Reemplaza XXXXcon la dirección IP del dispositivo del que deseas permitir conexiones de MySQL desdey reemplaza YYYYcon el valor de puerto correspondiente de tu configuración de MySQL. archivo (por ejemplo, 3306
                          1. Esto configurará el cortafuegos temporalmente. Si está utilizando un servidor Linux basado en Debian o Ubuntu, haga que este cambio sea permanente escribiendo sudo netfilter-persistent savey sudo netfilter-persistent reloaden la terminal o SSH ventana.
                          2. 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 los cortafuegos de Windows

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

                            1. Haga clic con el botón derecho en el menú Inicio y seleccione Ejecutar
                              1. En el cuadro Ejecutar, escriba wf.mscy seleccione Aceptar.
                                1. En la ventana de Windows Defender, seleccione Reglas de entrada >Nueva regla.
                                  1. En el Asistente para nueva regla de entrada, seleccione Puerto>Siguiente
                                    1. En el siguiente menú, seleccione TCPde las opciones, escriba 3306(o el valor de puerto que aparezca en su archivo de configuración de MySQL), luego seleccione Siguiente
                                      1. En el menú Acción, deje la opción predeterminada en Permitir la conexiónhabilitada, luego seleccione Siguiente
                                        1. Confirme que desea que la regla se aplique a todos los tipos de red, luego seleccione Siguiente.
                                          1. Escriba un nombre descriptivo para la regla (por ejemplo, MySQL) en el puerto proporcionado , luego seleccione Finalizarpara agregarlo a su lista de reglas de firewall.
                                          2. Si tiene problemas para conectarse, repita estos pasos anteriores , asegurándose de crear una nueva regla de salidaen la configuración de su firewall utilizando los mismos detalles (puerto 3306, etc.). Es posible que también deba configurar su enrutador de red local en abra los puertos bloqueados necesarios para permitir conexiones entrantes y salientes a su base de datos.

                                            Conexión a un servidor remoto usando MySQL

                                            Después de configurar su base de datos MySQL para permitir conexiones remotas, necesitará realmente establecer una conexión a ella. Puede hacer esto usando el comando mysql(mysql.exeen 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

                                            1. Para conectarse a su servidor MySQL remoto en Mac o Linux, abra una nueva ventana de terminal y escriba mysql -u username -h XXXX: XXXX -p. Reemplaza XXXX: XXXXcon la dirección IP y el número de puerto de tu servidor remoto (por ejemplo, 100.200.100.200:3306) y nombre de usuariocon tu 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.
                                              2. Conectando a MySQL en Windows

                                                1. 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 (Admin).
                                                  1. En la nueva ventana de PowerShell, escriba cd “C: \ Archivos de programa \ 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, utilice la carpeta MySQL Workbench 8.0.1en su lugar.
                                                    1. Desde allí, escriba . \ mysql.exe -u nombre de usuario -h X.X.X.X: XXXX -p. Reemplaza XXXX: XXXXcon la dirección IP y el número de puerto de tu servidor remoto (por ejemplo, 100.200.100.200:3306) y nombre de usuariocon un nombre de usuario de MySQL que permite el acceso remoto (como root). Siga 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.
                                                    3. Si esto no funciona, conéctese al servidor o PC que aloja su servidor MySQL usando SSH (o acceda a él directamente) siguiendo estos pasos y usando el argumento -h localhost. Luego puede crear una cuenta de usuario adecuada siguiendo los pasos a continuación.

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

                                                      En este punto, debería estar capaz de 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 utilizando el comando mysqla través de una conexión SSH remota o accediendo directamente a la PC o al servidor que aloja el servidor.

                                                      1. En su shell MySQL remoto (usando la herramienta mysql), escriba CREAR USUARIO “nombre de usuario” @ ”xxxx” IDENTIFICADO POR “contraseña”;y seleccione Entrar. Reemplace nombre de usuariocon el nombre de usuario que desea crear, xxxxcon la dirección IP desde la que desea conectarse y contraseñacon 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 nombre de base de datos, nombre de usuarioy x.x.x.xcon los detalles correctos. Si lo desea, reemplace nombre de la base de datospor *para otorgarle acceso a todas las bases de datos.
                                                        2. Con el acceso otorgado, siga los pasos de la sección anterior para conectarse a su servidor de forma remota usando 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 SQL base de datos, es importante mantener sus conexiones seguras para mantener la seguridad de sus datos. Una buena forma de hacerlo es generar claves SSH para acceso remoto a su servidor, en lugar de depender de 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 una copia de seguridad de archivos de Linux fácilmente. Si está ejecutando MySQL en Windows, puede configurar un sistema de copia de seguridad automático para Windows similar, lo que le permite restaurar sus datos en caso de emergencia.

                                                          Artículos Relacionados:


                                                          9.08.2021