EDIT: Para as instruções abaixo, se você estiver usando o Windows, há duas coisas a serem lembradas:
1) Altere localhost
para 127.0.0.1
, pois o Windows não tem essa configuração automática em %SystemRoot%\system32\drivers\etc\hosts
.
2) Você pode usar o comando pouco conhecido plink.exe ferramenta de linha do conjunto de ferramentas PuTTY ; ele usa a mesma sintaxe para opções como o comando ssh
, então se você substituir ssh
nos exemplos abaixo com plink.exe
, tudo deve funcionar.
Você desejará usar um túnel SSH para encaminhar uma porta local em seu cliente para a porta mysql no servidor. Você pode fazer isso com:
% ssh -f -N -L3306:localhost:3306 username@remoteserver
% mysql -h remoteserver -u mysqluser -p
As opções para ssh significam:
-f Requests ssh to go to background just before command execution.
-N Do not execute a remote command.
-L [bind_address:]port:host:hostport
Specifies that the given port on the local (client) host is to be
forwarded to the given host and port on the remote side.
Usar -f -N
também significa que você terá bifurcado um processo ssh em segundo plano, em vez de permanecer conectado ao host remoto da maneira que normalmente faria quando conectado a um shell remoto. Se você quiser derrubar o túnel, você pode matar o processo ssh no seu cliente assim:
% pgrep -fl ssh
11145 ssh -f -N -L3306:localhost:3306 username@remoteserver
% kill -9 11145
É claro que, neste caso, 11145
é o PID do processo ssh, que será diferente toda vez que você iniciar um novo processo ssh para abrir um túnel.
Além disso, suponha que você não tenha o servidor mysql também em execução no seu cliente. Em caso afirmativo, você precisará alterar a porta local a qual você se liga assim:
% ssh -f -N -L3333:localhost:3306 username@remoteserver
% mysql -P 3333 -h remoteserver -u mysqluser -p
A porta 3333
é arbitrária; você pode escolher qualquer número de porta livre que seu cliente tenha.