Acabei de instalar um novo servidor ubuntu com mysql (percona 5.5), mas ele se recusa a aceitar conexões de hosts remotos
Aqui está o que acontece se eu tentar conectar-me a este servidor remotamente:
mysql -h10.0.0.2 -uroot -pmypassowrd
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.0.2' (111)
telnet 10.0.0.2 3306
Trying 10.0.0.2...
telnet: Unable to connect to remote host: Connection refused
Quando verifiquei se o mysql escuta conexões remotas, vi o seguinte:
sudo netstat -ntlup | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 127018/mysqld
Como você pode ver, diz o 127.0.0.1:3306
que significa "Eu aceito apenas conexões locais".
Eu verifiquei minhas variáveis skip_networking
e bind-address
- tudo está desativado:
mysql> show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like '%bind%';
Empty set (0.00 sec)
Eu tenho outro servidor com absolutamente a mesma configuração e funciona muito bem:
sudo netstat -ntlup | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2431/mysqld
Qual pode ser a razão disso? Como faço para o mysql responder a conexões remotas?
bind_address
está disponível apenas desde a versão 5.6 ( bugs.mysql.com/bug.php?id=44355 ), portanto, ela retornará um conjunto vazio na v5.5, mesmo que esteja definido.Respostas:
Tente adicionar
bind-address = 0.0.0.0
à sua[mysqld]
seçãomy.cnf
e reinicie o mysqld .fonte
/etc/mysql/mysql.conf.d/mysqld.cnf
Pode ser devido à tabela de usuário do banco de dados mysql (use mysql; show tables;). Se a ligação para 0.0.0.0 não funcionar, tente dar ao usuário o host '%' no lugar de 'localhost' nessa tabela.
Por exemplo, tente criar um usuário como:
e tente se conectar com esse usuário.
fonte
Quando tudo mais falhar e você tiver certeza de que o servidor está escutando na porta padrão e você está tentando se conectar desesperadamente com o cliente mysql de outro host, tente especificar a porta na URL do comando mysql.
Por mais estranho que seja, tive que usar a seguinte sintaxe:
Eu encontrei isso (bug?) Totalmente por acidente (depois de perder meus cabelos :)).
Minha configuração: debian jessie, mysql fresco 5.7.18, users / db created, bind-address comentou-out, mysqld reiniciado
fonte
Acabei de ter esse problema e meu problema parecia estar relacionado ao firewall. BTW - Obrigado @Temnovit pelos comandos de solução de problemas do Mysql.
Usei o netstat para informar que o servidor estava em execução e na porta correta. Também pude perceber que meu servidor não estava aceitando conexões nessa porta com um simples comando telnet.
Após outra resposta útil sobre os comandos de firewall do Fedora, eu poderia abrir as portas corretas.
Meu comando telnet foi bem sucedido.
Se você ainda tiver problemas, é provável que haja um problema de permissão do usuário.
fonte
Eu
mariadb
instalei. O soulution foi modificar obind-address
localizado em/etc/mysql/mariadb.conf.d/50-server.cnf
fonte
A solução descrita no link abaixo deve resolver seu problema http://www.debianhelp.co.uk/remotemysql.htm
fonte