Como configurar um servidor MySql para aceitar conexões remotas?

16

Estou instalando um servidor MySql na área de trabalho do Ubuntu. Eu poderia conectar o MySql Query Browser a ele ao especificar o Server Hostnameas localhost, mas quando o substitui pelo IP da máquina, ele parou de funcionar (mesmo que o MySql Query Browser seja executado na mesma máquina).

Tudo o que fiz até agora foi remover o iptables, mas parece que não tem nada a ver com isso.

Aqui está a mensagem de erro

Não foi possível conectar ao host '192.168.0.2'.

MySQL Erro Nr. 2003

Não é possível conectar ao servidor MySQL em '192.168.0.2' (111)

Clique no botão 'Ping' para ver se há um problema de rede.

O ping está ok, no entanto

Jader Dias
fonte

Respostas:

22

Você precisará vincular seu mysqld a um IP diferente de 127.0.0.1.

Abra seu my.cnf (/etc/mysql/my.cnf normalmente) e altere a linha que diz

bind = 127.0.0.1

para qualquer IP que sua máquina use para se conectar ao mundo exterior. 0.0.0.0vincula a todos os endereços IP. Não se esqueça de reiniciar o mysqld após essa alteração.

halfdan
fonte
obteve um erro diferente agora: não foi possível conectar ao host '192.168.0.2'. MySQL Erro Nr. 1130 Host 'whatever-vubuntu.local' não é permitido se conectar a este servidor MySQL
Jader Dias
user @ localhost e user @ <hostname> são diferentes. Você precisa adicionar o usuário para poder se conectar a partir de hosts remotos.
James
Este não é o problema. Eu fiz isso e ainda recebo o erro.
Cerin
Deveria ser isso bind-address?
Thomas Weller
5

Além da resposta halfdan, eu tive que executar o seguinte comando mysql:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON databasename.*
TO 'username'@'clientipaddress'
IDENTIFIED BY 'password'

Como aprendi em

http://forums.mysql.com/read.php?86,23619,41248#msg-41248

Jader Dias
fonte
2

Vários outros problemas em potencial explicados aqui:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/en /access-denied.html

Se você deseja conceder todos os privilégios a todos os bancos de dados, tente

grant all on *.* to 'joe'@'%';

No entanto, antes de fazer isso, verifique se você tem um usuário no banco de dados "mysql" que tenha "Host" definido como seu endereço IP - no meu caso, meu IP aqui em casa. Portanto, o usuário "joe" pode ter mais de um registro, um para cada IP do qual ele pode estar ligando. Para ver o que você tem lá já:

use mysql;
select Host, User, Password from user where user='joe';`

No meu caso, o usuário tinha agora o IP correto, mas a senha também estava ausente. Eu colei a senha (está com hash ou algo assim) e isso resolveu meu problema particular de conexão remota:

update user set Password='5493845039485' where user='joe';

Mais uma coisa, no my.cnf você pode definir "port = 3306" ou qualquer outra porta que planeja usar.

PJ Brunet
fonte