Heroku e Mysql, conexão com banco externo

639 views
Skip to first unread message

Hugo Fagundes

unread,
Oct 4, 2016, 5:16:52 PM10/4/16
to rails-br

Estou fazendo uma engenharia reversa em um sistema, e o que desejo é utilizar a mesma base de dados do sistema antigo. Mas não estou conseguindo conectar o banco do sistema em produção com essa base. E por ser em MYSQL estou utilizando a gema mysql2, da seguinte forma:

heroku config:set DATABASE_URL="mysql2://meuusuariodobaco:minhasenha@link_para_o_banco_de_dados?reconnect=true"

E com isso minha aplicação está dando o seguinte log:

2016-10-03T16:53:38.782809+00:00 heroku[router]: at=error code=H12
desc="Request timeout" method=GET path="/favicon.ico"
host=bsbmusical.herokuapp.com request_id=78eae28a-04a9-4680-a49c-22e709c9dd18
fwd="189.6.126.19" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0

Tentei conectar na mão também, mas não consegui:

production:
  <<: *default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: meuUsuario
  password: minhaSenha
  host: meuHost
  port: portaDoBanco

Alex Takitani

unread,
Oct 4, 2016, 5:29:05 PM10/4/16
to rail...@googlegroups.com
Vc testou no console? Lá conecta?

heroku run rails c

--
--
Você recebeu essa mensagem porquê está inscrito no Google
Groups "rails-br".
Para enviar uma mensagem para o grupo, mande um email para rail...@googlegroups.com
Para se descadastrar, mande um e-mail para
rails-br+unsubscribe@googlegroups.com
Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7

---
Você recebeu essa mensagem porque está inscrito no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para rails-br+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Hugo Fagundes

unread,
Oct 4, 2016, 5:32:01 PM10/4/16
to rails-br


Quando dou heroku run rails c é executado normalemente.. 

Mas vocês diz conectar no banco pelo console?

Alex Takitani

unread,
Oct 4, 2016, 5:43:09 PM10/4/16
to rail...@googlegroups.com
Faz uma query no console, veja se funciona.

User.first ( ou qualquer model que vc tenha nesse app )

Em 4 de outubro de 2016 18:32, Hugo Fagundes <hugofag...@gmail.com> escreveu:


Quando dou heroku run rails c é executado normalemente.. 

Mas vocês diz conectar no banco pelo console?

--

Paulo Patto

unread,
Oct 4, 2016, 5:49:56 PM10/4/16
to rails-br
O erro não foi de timeout da rota de favicon?

"""
2016-10-03T16:53:38.782809+00:00 heroku[router]: at=error code=H12
desc="Request timeout" method=GET path="/favicon.ico"
"""


Acho que se você rodar `heroku run rails console` e tentar buscar alguma informação como `MyModel.all.count` deve rolar. Teste ai e nos diga no que deu.

Em 4 de outubro de 2016 18:16, Hugo Fagundes <hugofag...@gmail.com> escreveu:

Hugo Fagundes

unread,
Oct 4, 2016, 6:22:06 PM10/4/16
to rails-br
Boa, mas não foi, ficou um tempão e por fim me deu a mensagem:

Mysql2::Error: Can't connect to MySQL server on 'mysql20.redehost.com.br' (4)

Paulo Patto

unread,
Oct 4, 2016, 6:24:15 PM10/4/16
to rails-br
Acho que você não vai ter permissão de acessar seu banco de um dominio externo. Você consegue acessar esse banco com o mysql-client? Tipo digitando mysql -u $USER -p -h mysql20.redehost.com.br ?


Hugo Fagundes

unread,
Oct 4, 2016, 6:55:15 PM10/4/16
to rails-br
Consigo quando eu especifico a porta da seguinte forma:

mysql -u $USER -p -h mysql20.redehost.com.br --port=41890


Em terça-feira, 4 de outubro de 2016 18:16:52 UTC-3, Hugo Fagundes escreveu:

Paulo Patto

unread,
Oct 4, 2016, 7:17:05 PM10/4/16
to rails-br
Vai ter de configurar isso na url do MySQL (DATABASE_URL) Não sei como especificar isso de cabeça.

Hugo Fagundes

unread,
Oct 4, 2016, 7:20:19 PM10/4/16
to rail...@googlegroups.com
Eu fiz da seguinte forma:

heroku config:set DATABASE_URL="mysql2://meuusuariodobaco:minhasenha@link_para_o_banco_de_dados:41890?reconnect=true"
Vou tentar novamente. Sera que tem uma outra forma de especificar a porta?
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/rails-br/edHHOlshd98/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para rails-br+unsubscribe@googlegroups.com.

Hugo Fagundes

unread,
Oct 5, 2016, 9:30:53 AM10/5/16
to rails-br
É, não estou obtendo nenhum resultado da seguinte forma, como explicito na documentação do heroku, sendo database type mysql2:

[database type]://[username]:[password]@[host]:[port]/[database name]

Alex Takitani

unread,
Oct 5, 2016, 9:32:42 AM10/5/16
to rail...@googlegroups.com
Está certa a linha, a questão agora é se seu banco deixa o heroku conectar lá.

Em 5 de outubro de 2016 10:30, Hugo Fagundes <hugofag...@gmail.com> escreveu:
É, não estou obtendo nenhum resultado da seguinte forma, como explicito na documentação do heroku, sendo database type mysql2:

[database type]://[username]:[password]@[host]:[port]/[database name]

--

Hugo Fagundes

unread,
Oct 5, 2016, 1:26:10 PM10/5/16
to rails-br
Mas isso não depende apenas da meu usuario e senha?


Em quarta-feira, 5 de outubro de 2016 10:32:42 UTC-3, Alex Takitani escreveu:
Está certa a linha, a questão agora é se seu banco deixa o heroku conectar lá.
Em 5 de outubro de 2016 10:30, Hugo Fagundes <hugofag...@gmail.com> escreveu:
É, não estou obtendo nenhum resultado da seguinte forma, como explicito na documentação do heroku, sendo database type mysql2:

[database type]://[username]:[password]@[host]:[port]/[database name]

--
--
Você recebeu essa mensagem porquê está inscrito no Google
Groups "rails-br".
Para enviar uma mensagem para o grupo, mande um email para rail...@googlegroups.com
Para se descadastrar, mande um e-mail para

Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7

---
Você recebeu essa mensagem porque está inscrito no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para rails-br+u...@googlegroups.com.

Alex Takitani

unread,
Oct 5, 2016, 1:36:05 PM10/5/16
to rail...@googlegroups.com
Não, depende das permissões do seu mysql


Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7

---
Você recebeu essa mensagem porque está inscrito no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para rails-br+unsubscribe@googlegroups.com.

Hugo Fagundes

unread,
Oct 5, 2016, 1:39:18 PM10/5/16
to rails-br
Eu consigo conectar quando estou rodando um servidor local. Qual deve ser a permissão que deve estar impedindo o heroku?

Paulo Patto

unread,
Oct 5, 2016, 5:38:34 PM10/5/16
to rails-br
@Alex se ele consegue conectar da máquina dele ele em tese deveria conectar do Heroku sim, só se o Host tivesse um bloquei por IP tipo só IPs do Brasil. Nesse caso eu testaria com um proxy.

@Hugo na sua situação o que EU faria.


1. Essa base de dados é usada em produção? Se sim eu faria um *dump* como uma réplica, apenas para testes e não mexeria nesses dados. 
2. No rails console no heroku eu tentaria executar uma conexão direta usando a mysql2(https://github.com/brianmario/mysql2) e ver se o erro é na string de conexão ou em acesso ao servidor mesmo. Não achei nada do Heroku bloquear o acesso a base dedos externas, então... Acredito que esse seria um teste válido.


Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7

---
Você recebeu essa mensagem porque está inscrito no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para rails-br+unsubscribe@googlegroups.com.

Hugo Fagundes

unread,
Nov 4, 2016, 9:38:51 AM11/4/16
to rails-br
Realmente não está sendo feita a conexão corretamente, tentei via console e aí está o problema, o mysql2 não está efetuando a conexão. Não sei o que fazer rsrs

Leandro Machado Pereira

unread,
Nov 4, 2016, 10:03:43 AM11/4/16
to rails-br
Hugo, eu criei um aplicativo de teste e consegui conectar em uma base de dados externa com a string de conexão.

mysql2://usuario:password@ip_servidor:porta/database

Um detalhe, eu tive que trocar a senha so mysql pois havia @ na senha e a gem não conseguia conectar ao server.

Tudo indica que seu mysql não está liberado para receber conexões externas.


Hugo Fagundes

unread,
Dec 1, 2016, 9:47:59 AM12/1/16
to rails-br
Ok, leandro, entao o meu problema deve ser os caracteres especiais que possuem na senha. Vou ver como faço aqui, e dou um retorno. Obrigado

Hugo Fagundes

unread,
Dec 1, 2016, 10:27:06 AM12/1/16
to rails-br
Consegui, o problema era simplesmente esse, o caracter especial... Valeu
Reply all
Reply to author
Forward
0 new messages