Todos os computadores envolvidos são máquinas Mac OS X 10.6.x.
Eu estou no computador A, e tenho o mysql rodando nele, e posso me conectar a ele como A~ $ mysql -u punkish -p database
e assim por diante.
Eu tenho acesso ao computador B que também tem o mysql rodando nele. Eu posso ssh em B através da porta 2200 com os pares de chaves ssh configurados, e uma vez em, eu posso conectar ao banco de dados como assim
A~ $ ssh -p 2200 punkish@B
B~ $ mysql -u punkish -p database
No entanto, eu quero configurar o encaminhamento de porta por ssh no meu computador para que todos os pedidos feitos para o mysql na porta 3307 no meu computador A sejam realmente enviados para a porta 3306 em B. Isso me permitirá usar um programa gui (Quantum GIS) que quer se conectar ao mysql, mas não pode fazê-lo em um túnel. Então, eu faço o seguinte
A~ $ ssh -p 2200 -L 3307:B:3306 punkish@B
B~ $
O acima me registra em B. Não tenho certeza se o túnel está estabelecido, mas estou assumindo que é. No entanto, o seguinte falha (em outro terminal
A~ $ mysql -P 3307 -u punkish -p
Enter password:
ERROR 1045 (28000): Access denied for user 'punkish'@'localhost' (using password: YES)
Aqui está a coisa interessante - eu tenho outro programa gui chamado Sequel Pro (um cliente MySQL de desktop para Mac OS X), e que é capaz de fazer uma conexão com o mysql @ B através do ssh. Então, eu sei que alguma coisa funciona ... Eu só não sei como.
Respondendo a minha própria pergunta (porque não posso responder em menos de 8 horas)
Eu descobri uma solução, mas não entendo o porquê. Aqui vai -
Eu estava usando o seguinte comando para fazer um túnel
user@compt_A ~$ssh -p 2200 -L 3307:compt_B:3306 ssh_user@compt_B cat -
Eu tenho que mudar o acima para
user@compt_A ~$ssh -p 2200 -L 3307:127.0.0.1:3306 ssh_user@compt_B cat -
Agora os seguintes trabalhos
user@compt_A ~$mysql -P 3307 -p -h 127.0.0.1 -u <db user@compt_B>
A razão que não faz sentido para mim é porque o primeiro comando diz: "estabelecer um túnel SSH pela porta 2200, encaminhando a porta local 3307 para a porta 3306 no computador B" e isso faz mais sentido do que "estabelecer um Túnel SSH pela porta 2200, encaminhando a porta local 3307 para a porta 3306 em 127.0.0.1 "
No entanto, funciona.
Ah, fwiw, se eu usar o primeiro comando, então o comando mysql falha com a mensagem
ERROR 1130 (HY000): Host 'compt_A' is not allowed to connect to this MySQL server