Eu tenho um servidor MySQL em execução no meu computador de trabalho, que executa o Mac OS X Maverick. Quero acessá-lo no computador doméstico, que também possui o Mac OS Maverick.
Do terminal, se em uma guia, eu ssh no meu computador de trabalho e deixo a sessão ssh lá sem ficar ociosa, em outra guia, posso acessar o servidor MySQL.
No entanto, sem a sessão ssh em execução, receberei o seguinte erro
ERRO 2003 (HY000): Não é possível conectar ao servidor MySQL em 'SERVER_IP_ADDRESS' (60)
Tentei modificar o my.cnf
arquivo no servidor comentando o endereço de ligação ou atribuindo-o, 0.0.0.0
mas não funciona.
Por que é assim? Como posso configurar o servidor para permitir acesso remoto sem precisar executar o ssh no cliente? Alguém pode ajudar por favor?
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.Respostas:
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 especificadosbind-address=0.0.0.0
. Até removi e reinstalei o MySQL seguindo estas instruções e depois reinstalei usandobrew 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 osmy.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:/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
e substitua--bind-address=127.0.0.1
porbind-address=*
ou--bind-address=0.0.0.0
( consulte a documentação do MySQL no endereço de ligação )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.
fonte
brew install mysql56
e alterei os arquivos~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
e/usr/local/Cellar/mysql56/5.6.32/homebrew.mxcl.mysql56.plist
. Mas ainda quando inicio o mysqlmysql.server start
, o comando ps mostra que obind-address=127.0.0.1
. Existem outros arquivos para editar?mysql.server start
ignora o LaunchAgent, por isso provavelmente obtém sua configuração de outro lugar. Para usar a configuração noplist
, você provavelmente terá que usarbrew services restart mysql
brew services restart mysql
saídaSuccessfully started
mysql` (label: homebrew.mxcl.mysql) `mas ainda assim o endereço é127.0.0.1
. Na verdade eu não puderam encontrarhomebrew.mxcl.mysql.plist
em vez de terhomebrew.mxcl.mysql56.plist
mysqld_safe
para mim não tembind_address
. Em vez disso, é especificado em/usr/local/etc/my.cnf
.Em execução
locate my.cnf
encontrou o arquivo/usr/local/etc/my.cnf
bind-address = 0.0.0.0
brew services restart mysql
fonte
Espero que você precise criar o usuário para acesso remoto com
'%'
curinga e conceder permissões nos bancos de dados.Passo 1:
Em my.cnf ( /server/9107/how-do-i-find-where-mysql-is-loading-its-config-from ) comente seu endereço de ligação
E reinicie o MySQL Server.
Passo 2:
Então você precisa conceder permissões ao usuário para acesso remoto
Por favor, dê uma olhada em Como habilitar a conexão remota.
fonte
mysql> show grants for 'home'; | Grants for home@% | GRANT ALL PRIVILEGES ON *.* TO 'home'@'%' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
Verifique iptables como iptables -L
Se o seu IP não estiver presente, adicione-o
No caso do Ubuntu ADD IP para permitir o acesso:
fonte