Usando o SSH para conectar em um banco MySQL remoto
Publicado em Developer
mysql ruby ssh
Hoje precisei conectar direto no banco de dados do meu site, para começar a fazer o processo de incluir tags e URLs mais descritivas para os meus posts. Eu poderia usar um programa em Ruby usando o ActiveRecord para fazer isso, mas iria gerar uma enxurrada de posts novos no feed, e não seria legal. Decidi conversar diretamente com o banco de dados.
O problema é que o hosting não deixa conectar remotamente a não ser que se configure explicitamente os usuários e IPs remotos permitidos, e com IP dinâmico não fica uma coisa muito legal. O interessante é que temos a opção de usar um túnel SSH para fazer o serviço. Para criar o túnel (lembrem-se, eu uso GNU/Linux) é só usar o seguinte comando:
ssh -L 3307:mysql.host.com:3306 user@host.com
Onde 3307 é a porta por onde vou conectar localmente o túnel, host.com é o seu host e user é o usuário que vai conectar no host. Depois de executado esse comando, ele irá conectar no host normalmente como uma sessão SSH, mas criará o túnel. Para conectar no túnel, vamos usar:
mysql -u user -p -P 3307 -h 127.0.0.1 database
Onde user é o usuário do banco de dados, 3307 é a porta local do túnel que criamos e database é o nome do banco de dados. A partir desse momento, estamos conectados com o banco de dados remoto usando a autenticação e conexão do túnel SSH. Fica a dica de como conectar no túnel usando Ruby:
con = DBI.connect("DBI:Mysql:database=banco;host=127.0.0.1;port=3307","user","pass")
Comentários
Comentários fechados.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300
A dica do túnel SSH é muito legal. Eu e uns amigos usávamos a mesma idéia para conectar no proxy de casa e assim navegar em alguns sites necessários que eram bloqueados, como o GMail.
Abraços!