Cómo acceder a MySQL a través del túnel SSH
Para acceder a MySQL, usted. Necesita utilizar el canal SSH para acceder a MySQL.
Muchas veces, al utilizar Mysql, se encontrará con la siguiente situación:
Para la seguridad de la base de datos, el administrador de la base de datos agregará una capa de "paraguas de protección" al configurar la base de datos. base de datos.
1. La información es importante y desea que la comunicación esté cifrada.
2. Algunos puertos (como el puerto 3306) están deshabilitados por el enrutador.
Para el primer problema, la solución relativamente sencilla es cambiar el código de mysql o utilizar algunos certificados, pero este método obviamente no es muy sencillo.
Otro método que se cubrirá aquí es utilizar un túnel SSH para conectarse a Mysql remoto de una manera bastante sencilla.
Establezca un canal SSH
Por ejemplo:
IP del servidor Mysql remoto: 172.21.20.203
Número de puerto MySQL: 3307 Nombre de usuario : Contraseña de prueba: 123456
IP del canal SSH: 117.123.52.161 Puerto: 79
Nombre de usuario: Contraseña de prueba: 123456
IP del canal SSH: 117.123.52.161 Puerto: 79
Puerto: 79
Esta es la primera vez que intento conectarme a Mysql.
Nombre de usuario: admin
A través de la herramienta cliente navicat para mysql,
Normalmente nuestra conexión normal es la siguiente:
Haga clic para conectarse Prueba: debido a la adición del protocolo SSH, aparecerá un cuadro de error. Por lo tanto, debemos usar un canal SSH, como se muestra a continuación:
Esta vez, haga clic en Connect Test para conectarnos y la prueba será exitosa.
Simplemente escriba el siguiente comando localmente:
ssh -fNg -L 3307:127.0.0.1:3306 myuser@remotehost.com
Este comando le dice a ssh Log Ingrese a remotehost.com como myuser, ingrese el fondo (-f), no ejecute ningún comando remoto (-N) y configure el reenvío de puertos (-L localport:localhost:remoteport). En este ejemplo, reenviamos el puerto 3307 en localhost al puerto 3306 en remotehost.com.
Segunda conexión a Mysql
Por ejemplo, tecleamos en la terminal:
ssh -fNg -p 79 -L 8989:172.21 .20.203:3307 admin @117.123.52.161
Ahora puede conectarse a la base de datos remota como si estuviera accediendo a ella localmente.
Haga clic para conectarse, la prueba es exitosa
mysql -h 127.0.0.1 -P 3307 -u dbuser -p db
Este comando le dice al MySQL local cliente para conectarse al puerto localhost 3307 (reenviado vía ssh a remotehost.com:3306).
El intercambio de datos entre el cliente y el servidor ahora se realiza a través de una conexión ssh cifrada.
O utilice el navegador de consultas Mysql para acceder al puerto 3307 del cliente.
Similar a PHP:
Úselo como demonio
Para garantizar que las conexiones se ejecuten al inicio y reaparezcan en caso de falla, una manera rápida y sucia La manera sucia es agregarlo a /etc/inittab y dejar que el proceso de inicio (es decir, el kernel) continúe ejecutándose.
Agregue lo siguiente al /etc/inittab de cada cliente:
sm:345 respawn:/usr/bin/ssh -Ng -L 3307:127.0.0.1: 3306 myuser@ remotehost.com
Eso es todo lo que necesitas hacer. Envíe una señal HUP (kill - HUP 1) a init para que vuelva a funcionar. HUP 1) Haz que recargue la configuración. Para desactivarlo, comente esta línea y envíe la señal HUP a inicio nuevamente.
Eso es todo lo que necesitas hacer.