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.
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.
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
- 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).
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.
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:
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
Conectando a MySQL en Windows
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.
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.