Supondo que você executou este comando: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -Nconforme descrito na postagem que você vinculou.
Uma análise do comando:
ssh: isso é bastante autoexplicativo. Invoca ssh.
-f: (Da man sshpágina)
Solicita que ssh vá para segundo plano antes da execução do comando. Isso é útil se o ssh vai pedir senhas ou frases-senha, mas o usuário quer em segundo plano.
Essencialmente, envie sshpara segundo plano depois de inserir qualquer senha para estabelecer a conexão; ele retorna o prompt do shell para você em em localhostvez de fazer o login no remote-host.
user@mysql-server.com: o servidor remoto no qual deseja fazer login.
-L 3306:mysql-server.com:3306: Esta é a parte interessante. -L(da man sshpágina):
[bind_address:] port: host: hostport Especifica que a porta fornecida no host local (cliente) deve ser encaminhada para o host e a porta fornecidos no lado remoto.
Assim, -L 3306:mysql-server.com:3306liga a porta local3306 à porta remota 3306 no host mysql-server.com.
Quando você se conecta à porta local3306 , a conexão é encaminhada pelo canal seguro para mysql-server.com. O host remoto , mysql-server.comem seguida, conecta-se mysql-server.comna porta 3306.
-N: não execute um comando. Isso é útil para "apenas encaminhar portas" (citando a página do manual).
Este comando afeta alguma coisa no servidor?
Sim, ele estabelece uma conexão entre localhost e mysql-server.com na porta 3306 .
E como faço para fechar este túnel ...
Se você já usou -f, notará que o sshprocesso que você abriu fica em segundo plano. O método mais agradável de fechá-lo é executar ps aux | grep 3306, encontrar o pidde ssh -f ... -L 3306:mysql-server.com:3306 -N, e kill <pid>. (Ou talvez kill -9 <pid>; esqueci se apenas killfunciona). Isso tem o belo benefício de não matar todas as suas outras sshconexões; se você tem mais de um, restabelecê-los pode ser uma pequena ... dor.
... porque agora não consigo usar meu mysql local corretamente.
Isso ocorre porque você efetivamente "capturou" o processo local mysql e encaminhou para o processo remoto qualquer tráfego que tentasse se conectar a ele mysql. Uma solução muito mais agradável seria não usar a porta local 3306 no encaminhamento de porta. Use algo que não seja usado, como 33060. (Números mais altos geralmente são menos usados; é muito comum encaminhar uma combinação como esta: "2525-> 25", "8080-> 80", "33060-> 3306" ou semelhante. Torna a lembrança um pouco mais fácil).
Então, se você usou ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -N, você apontaria sua função Zend connect-to-mysql para uma localhostporta 33060, que se conectaria a uma mysql-server.comporta 3306. Obviamente , você ainda pode se conectar a uma localhostporta 3306, portanto, ainda pode usar o mysqlservidor local .