Como eu poderia configurar meu servidor local para permitir conexão jdbc ao mysql?

1

Eu tenho um pequeno aplicativo Java. No momento estou tentando fazê-lo funcionar com o mysql. Eu tenho o VMware Workstation e o Ubuntu Server 10.10 rodando nele. Quando eu estou tentando se conectar ao servidor (do meu PC onde o VMware está rodando) para iniciar a conexão JDBC para o driver mysql, ele não funciona. Eu fiz uma pergunta semelhante anteriormente em SO. Primeiro e único answer (no momento) é que o firewall ou o tipo de conexão pode ser o problema, mas não sei como configurá-lo corretamente.

Talvez alguém possa ajudar com essa parte?

Também tentei criar um arquivo *.jar a partir do meu aplicativo e no link coloquei localhost e no servidor ele funciona bem, então acho que prova que existe alguma limitação durante a conexão.

    
por Eugene 18.07.2011 / 13:01

1 resposta

2

Meu palpite é o bind-address

A porta padrão para o mysql é 3306. Verifique se está ouvindo em todas as interfaces com netstat -tanlp | grep LISTEN | grep 3306 :

tcp        0      0 0.0.0.0:3306  0.0.0.0:*  LISTEN      mysqld

Se isso diz 127.0.0.1:3306 , então o seu mysql está escutando apenas no localhost. Se for esse o caso, altere a configuração my.cnf bind-address do mysql:

bind-address    = 10.0.0.1

ou

bind-address = 0.0.0.0 

para ouvir em todas as interfaces.

Atualização: Ok, agora que você é capaz de se conectar à porta 3306. A mensagem de erro:

Host 'vm_ip' is not allowed to connect to this MySQL server

Significa que não há firewall / iptables no caminho. A mensagem vem do próprio MySQL. Você precisará fazer "concessões" apropriadas para permitir que seu "usuário" se conecte ao banco de dados do seu "host". De uma perspectiva de segurança, você precisa ter muito cuidado com o que você habilita aqui. Veja o seguinte URL para ajuda:

link

Existem muitos sites que concedem a todos os links de todos os tipos. Tenha muito cuidado com o que você usa destes. Se seu usuário precisar de acesso somente leitura, você poderá começar com algo como:

GRANT select ON mydatabase.* to myusername@'192.168.1.1' IDENTIFIED BY 'mypasssword';

Tenha muito cuidado ao simplesmente executar um comando do tipo "GRANT all".

    
por 18.07.2011 / 14:19