sql >> Base de Datos >  >> RDS >> Mysql

Conectarse a MySQL de forma remota

Este es un tutorial avanzado. ¡Cuidado! No podemos proporcionar ninguna asistencia para este proceso ni podemos ayudar con los problemas causados ​​por él. ¡Asegúrese de realizar una copia de seguridad completa del servidor antes de continuar!

A veces puede ser útil habilitar conexiones remotas a MySQL. Esto le permite conectarse directamente a MySQL en uno de sus servidores desde una aplicación o cliente MySQL que se ejecuta en un sistema diferente.

Hay dos formas diferentes de acceder a MySQL de forma remota:

  1. Usando un túnel SSH.
  2. Habilitación del acceso directo a MySQL desde sistemas remotos.

Conectarse a MySQL mediante un túnel SSH

El uso de un túnel SSH es la opción más fácil y segura para el acceso remoto a MySQL con fines de desarrollo. Un túnel SSH hará que parezca que MySQL se está ejecutando en su sistema local. SSH hace esto abriendo un puerto local y transfiriendo sin problemas toda la comunicación a través de ese puerto a través de MySQL que se ejecuta en su servidor.

Para crear un túnel SSH desde Mac o Linux, puede ejecutar el comando SSH de la línea de comando con -L para habilitar el reenvío de puerto local.

ssh -L localhost:2000:localhost:3306 serverpilot@SERVER_IP_ADDRESS

En el ejemplo anterior, SSH abriría el puerto 2000 en su sistema local y luego puede comunicarse con MySQL conectándose a este puerto local. Por ejemplo, puede conectarse usando el comando MySQL:

mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -p
No lo deje fuera --protocol=tcp o MySQL puede ignorar silenciosamente el --host y --puerto opciones

También puede crear túneles SSH en Windows usando PuTTy, el popular cliente SSH de Windows.

Habilitación del acceso directo a MySQL desde sistemas remotos

¡Advertencia! Permitir el acceso directo a MySQL aumenta el riesgo de que los atacantes comprometan su servidor. ¡Advertencia! MySQL no utiliza conexiones seguras por defecto. El manual de MySQL tiene más información sobre SSL con MySQL.

Paso 1:Configure MySQL para escuchar en todas las interfaces.

Por defecto, MySQL solo escucha conexiones en localhost , por lo que el primer paso es reconfigurar MySQL en su servidor de base de datos para escuchar en todas las interfaces. Para hacer esto, inicie sesión en su servidor como root .

Si está ejecutando un servidor Ubuntu 16.04 o 18.04, edite este archivo:

/etc/mysql/mysql.conf.d/mysqld.cnf

Para servidores 14.04 o 12.04, edite este archivo:

/etc/mysql/my.cnf

Busque la siguiente línea en cualquiera de los archivos:

bind-address = 127.0.0.1

Cambiar la dirección de enlace a 0.0.0.0 :

bind-address = 0.0.0.0

Guarde este archivo y luego ejecute el siguiente comando como root :

sudo service mysql restart

Paso 2:Abra el puerto TCP 3306 en el firewall de su servidor.

El firewall configurado por ServerPilot bloquea todo acceso a MySQL desde fuera de su servidor. Por lo tanto, deberá personalizar su firewall para permitir el acceso a MySQL.

Para abrir el acceso a MySQL desde fuera de su servidor, consulte nuestro artículo sobre cómo personalizar su firewall.

Paso adicional para EC2:permitir el puerto TCP 3306 en sus grupos de seguridad.

Si se trata de un servidor EC2, también debe permitir el puerto 3306 en los grupos de seguridad de su servidor.

Configure su(s) aplicación(es) para usar el host remoto.

Una vez que haya configurado el servidor MySQL remoto, querrá configurar su(s) aplicación(es) para usar ese host para las transacciones de la base de datos. Por lo general, esto se establece en el archivo de configuración de la aplicación y usaremos WordPress como ejemplo.

Abra el archivo wp-config.php de la aplicación.

En esta línea:

define('DB_HOST', 'localhost');

Cambie 'localhost' a la dirección IP de su servidor MySQL remoto o al nombre de host completo. La dirección IP normalmente será una opción más rápida y confiable, ya que no depende de la resolución de DNS.

Guarde el archivo y salga, ¡y ya está todo listo! Ahora puede probar su aplicación para asegurarse de que funciona correctamente.