Não é possível conectar-se à porta 3306 em um servidor MySQL remoto usando o MySQL Workbench no Mac OS X

1

Eu quero acessar o MySQL remotamente:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

Quando o Workbench não conseguiu se conectar, dei uma olhada com o ping e o telnet:

Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ ping 192.168.0.21
PING 192.168.0.21 (192.168.0.21): 56 data bytes
64 bytes from 192.168.0.21: icmp_seq=0 ttl=64 time=0.274 ms
64 bytes from 192.168.0.21: icmp_seq=1 ttl=64 time=0.499 ms
^C
--- 192.168.0.21 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.274/0.387/0.499/0.113 ms
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21 3306
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 

Estou instalando coreutils e terei que aprender como usar netstat no Mac e lsof - aparentemente é diferente.

O servidor arrakis está executando OpenSuSE ; tem portas fechadas?

Nota: Eu não instalei o MySQL no Mac, ele me dá erros ...

----------------------------------------------- ------------------------------- atualização

MariaDB [mysql]> 
MariaDB [mysql]> GRANT ALL ON *.* TO 'thufir'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> select host, user, grant_priv from user;
+------------+--------+------------+
| host       | user   | grant_priv |
+------------+--------+------------+
| localhost  | root   | Y          |
| linux-k7qk | root   | Y          |
| 127.0.0.1  | root   | Y          |
| ::1        | root   | Y          |
| localhost  |        | N          |
| linux-k7qk |        | N          |
| %          | cron   | N          |
| localhost  | cron   | N          |
| localhost  | custom | N          |
| %          | custom | N          |
| %          | slave  | N          |
| %          | root   | N          |
| %          | thufir | N          |
+------------+--------+------------+
13 rows in set (0.00 sec)

MariaDB [mysql]> 
    
por Thufir 20.03.2015 / 10:03

1 resposta

2

Para habilitar a rede no MySQL você precisa ter certeza de que duas coisas são tratadas corretamente: O MySQL concede e o próprio MySQL precisa ter a rede ativada:

Configurando concessões do MySQL.

Seu comando GRANT parece estranho para mim:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

Por que o '192.168.0.16' em aspas simples, mas o usuário não é? Pode ver que '192.168.0.16' como literal com as aspas simples para o host. Então tente fazer assim:

GRANT ALL ON *.* TO '[email protected]' IDENTIFIED BY 'hfdks4329vjkl';

Mas quando concedo permissões como essa, existem dois comandos e eles são estruturados assim:

GRANT USAGE ON *.* TO '[email protected]' IDENTIFIED BY 'thufir';
GRANT ALL PRIVILEGES ON *.* TO '[email protected]';

Depois de definir as concessões, você precisa liberar a tabela de privilégios para obter os novos privilégios a serem carregados:

FLUSH PRIVILEGES;

E você deve ser bom para ir.

Ativar rede MySQL.

Mas, por exemplo, verifique sua my.cnf e se houver uma configuração de bind-address como esta:

bind-address = 127.0.0.1

Isso vinculará o MySQL a localhost (ex: 127.0.0.1 ) por padrão e é um comportamento de segurança normal para o MySQL, já que expor servidores de banco de dados a uma rede pode ser um risco de segurança. Portanto, nesse caso, como você precisa de uma rede ativada, é necessário comentar isso assim:

#bind-address = 127.0.0.1

E também certifique-se de que skip-networking esteja desativado, comentado assim:

#skip-networking

E, em seguida, reinicie o servidor MySQL para que as novas configurações entrem em vigor.

Postscript.

Agora, tudo o que foi dito, o comando GRANT do MySQL que você usa usa o endereço IP 192.168.0.16 , mas todos os seus testes ping e telnet são para 192.168.0.21 . Então, qual é o endereço IP? Quando você define concessões no MySQL, você faz isso com base no endereço IP do cliente ; não o endereço IP do servidor.

Portanto, se o servidor tiver o endereço IP 192.168.0.16 e o cliente tiver o endereço IP 192.168.0.21 , o comando MySQL GRANT deverá usar 192.168.0.21 e não a 192.168.0.16 como seus exemplos mostram. Talvez seja esse o problema?

    
por 21.03.2015 / 05:21