Eu tenho batido minha cabeça contra esse erro hoje no OSX Yosemite com o MySQL 5.7 recentemente atualizado com o Homebrew. Seguindo as sugestões no StackOverflow e em outros lugares, procurei os my.cnf
arquivos especificados bind-address=0.0.0.0
. Até removi e reinstalei o MySQL seguindo estas instruções e depois reinstalei usando brew install mysql
. Ainda não são permitidas conexões remotas.
Não foi até que eu corri ps -ax | grep mysql
e notei que o endereço de ligação estava sendo passado no comando de inicialização (substituindo todos os my.cnf
arquivos) que eu pesquisei mais um pouco e descobri que o Homebrew vincula o MySQL ao 127.0.0.1 por padrão .
Editar ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
para alterar --bind-address=127.0.0.1
para --bind-address=0.0.0.0
resolver meu problema (o último deve ser alterado para um endereço IP específico, se não for apenas uma máquina de desenvolvimento).
Eu sinto que esta é uma informação vital que estava faltando na maioria dos recursos que consultei. Espero que a publicação aqui aqui ajude outra pessoa!
EDIT: Como o LeandroCR indicou nos comentários, a execução brew services restart mysql
substituirá o arquivo plist no LaunchAgents pelo padrão, levando o MySQL a recusar misteriosamente as conexões novamente. Portanto, conselhos melhores do que o que escrevi originalmente são os seguintes:
- Edite
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
e substitua --bind-address=127.0.0.1
por bind-address=*
ou --bind-address=0.0.0.0
( consulte a documentação do MySQL no endereço de ligação )
- Reinicie o mysql usando
brew services restart mysql
Então, o MySQL deve continuar a aceitar conexões não locais a partir de então - até que você o reinstale, provavelmente.
Editar (Set 2019)
Timothy Zorn salienta que este problema não ocorre para MySQL 8.x instalado e executado através de Homebrew, então minha resposta acima, escrito em 2016, só pode ser relevante para 5.x.
ssh
é aberto em uma guia, mas caso contrário não. Acho que o problema é que o processo do servidor de banco de dados está em pausa ou não está sendo executado quando não estou conectado ao servidor remoto.