remotas - crear conexion a servidor en mysql workbench
Conexión MySQL a través del túnel SSH: ¿cómo especificar otro servidor MySQL? (4)
Tengo ~ 50 bases de datos configuradas en diferentes nombres de host, con el requisito de que me conecte a través de un túnel SSH.
Por ejemplo:
SSH host en
ssh.example.com
MySQL host en
mysql1.example.com
Logré crear el túnel utilizando autossh (servidor web que ejecuta Debian), pero parece que no puedo averiguar cómo conectarme a un nombre de host MySQL específico "más allá" del túnel SSH.
Escribiendo lsof -i -n | egrep ''/<ssh/>''
lsof -i -n | egrep ''/<ssh/>''
confirma que el túnel está funcionando (envía el puerto 3307 al puerto ssh.example.com 3306)
Entonces, cuando intento mysql -h 127.0.0.1 -P 3307
me niega la conexión. No es demasiado raro ya que no es un servidor MySQL.
Mi pregunta para ustedes:
¿Cómo especifico el host mysql1.example.com
DESPUÉS de crear el túnel SSH? He intentado buscar en todas partes pero parece que no puedo resolverlo.
¡Resuelto! La cosa era conectarse al servidor correcto al crear el túnel en sí, debería haberlo visto venir.
ssh -f [email protected] -L 3307:mysql1.example.com:3306 -N
Entonces mysql -h 127.0.0.1 -P 3307
funcionó como estaba previsto. :)
Cuando no tienes acceso directo a mysql-server
, usas jump-server
.
Desde su máquina, se conecta (ssh) al servidor de salto y desde allí se conecta a su mysql-server
.
Esto puede evitarse usando ssh- tunneling
.
Supongamos que tu
jump server is `jump-ip`
mysql server is `mysql-ip`
your machine is `machine-ip`
Simplemente abra el cliente ssh (Putty en windows o terminal en linux / ios).
Tipo:
ssh -L [local-port]:[mysql-ip]:[mysql-port] [jump-server-user]@[jump-ip]
Después de esto, puede usar su local-port
y local-port
para acceder directamente al servidor mysql en la máquina remota.
P.ej. Su url Jdbc para acceder a la base de datos mysql, en ese caso, será
jdbc:mysql://localhost:[local-port]/[database-name]
He creado un túnel para la base de datos utilizando este comando
ssh -L 10000:localhost:3306 user@<ip addess to connect DB> -N -f
-L es el puerto del host local que está definido por el usuario u puede proporcionar cualquier número de puerto
entre 0 a 65535. 0 a 1023 están reservados.
Si está usando autenticación basada en clave para el servidor, debería
Menciona la clave así.
ssh -i <path of the private key> -L 10000:localhost:3306 user@<ip addess to connect DB> -N -f
Tengo un buen blog sobre cómo conectarme a MySQL usando el túnel SSH. Está muy bien explicado here .
El comando para conectarse al túnel SSH:
ssh -L [listening port]:[REMOTE_MYSQL_HOST]:[REMOTE_MYSQL_PORT] [SSH_USER]@[SSH_HOST]
El comando para conectarse a MySQL:
localhost:[listening port]