MySQL só funciona no locahost (no servidor), não acessa remotamente de outras máquinas da rede

Olá pessoal,

estou obtendo a seguinte mensagem de erro ao tentar acessar um banco de dados mysql a partir de uma aplicação java em outra máquina da rede:

Communications link failure due to underlying exception
Malformed reply from socks server

utilizo windows server 2003 no servidor

Classe que conecta

public class Conexao {

    public static Connection getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection c = DriverManager.getConnection("jdbc:mysql://192.168.0.100/database", "user", "password");
            return c;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Nao foi possivel conectar ao banco de dados\nerro: "+e.getMessage());
            return null;
        }
    }
}

consigo acessar o db de outras máquinas pelo MySQLQueryBrowser mas não pelo programa em java, só consigo se for localhost aí funciona.

no MySQLQueryBrowser SELECT * FROM user u;

HOST USER

localhost root
192.168.%.% remoto
% remoto
% root

O que devo fazer para que as outras máquinas consigam acessar o banco de dados?

Tenta colocar a porta

Connection c = DriverManager.getConnection("jdbc:mysql://192.168.0.100:3306/elshadai", "remoto", "193745"); 

não funcionou não :?

Você habilitou a opção de permitir conexão remota quando fez a instalação do MySQL :!: ?

incompatibilidade de versão entre o driver JDBC x ServidorMySQL ?

irmãozinho…

provavelmente vc não está configurando o ODBC direito

ao invés de usar o driver ODBC , usa o nativo do MySql

1° baixa o seguinte driver No site do MySql

mysql-connector-java-3.1.13-bin.jar

(talvez vc soh consiga baixar um .ZIP com um monte de .JAR dentro, mas dentre esses .JARs vc vai encontrar esse aí)
esse ai não é o driver mais atul, mas, pra mim , é o mais testado.

tu vai adicionar esse jar ai no teu projeto

vai ai um exemplo de como fazer uma conexão com o driver nativo …

private static Connection con;
	private static String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC
	
	public static Connection obterConexao(String fonteDados) {
		try {
				
			Class.forName(driverName);
			String url = "jdbc:mysql://192.168.0.29" + ":3306/" + fonteDados;
			String usuario = "biblioteca";
			String senha = "jk2HU*Nj!36";
	
			if(con == null){
				con = DriverManager.getConnection(url, usuario, senha);
				System.out.println("Conexão realizada com sucesso");
        	} 
			else{
				con = null;
            	return obterConexao(fonteDados);
        	}
		
	   } catch (SQLException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
			System.exit(0);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
        return con;
  	  
	}

falow

Verifique no arquivo my.cnf do Mysql se o bind-address está para 127.0.0.1. Se estiver, é porque ele só está ouvindo a interface de loopback. Habilite outras redes e reinicie o mysql. Essa é a configuração default do mysql…

Remova ou comente a seguinte linha do arquivo my.conf

skip-networking

Sim, após a instalação, naquele módulo de configuração (mysqlinstanceconfig.exe)

qual arquivo devo alterar? my.ini, my-ruge.ini, my-small.ini ? tem vários eu uso mysql 5.

Mas eu consigo acessar de outra máquina com o mysqlquerybrowser talvez não seja este o problema.

[quote=xandroalmeida]Remova ou comente a seguinte linha do arquivo my.conf

skip-networking

[/quote]
não tem essa linha no arquivo my.ini, tem

#skip-innodb mas tá comentada

[quote=javando]irmãozinho…

provavelmente vc não está configurando o ODBC direito

ao invés de usar o driver ODBC , usa o nativo do MySql
(…)

falow[/quote]
fiz o que me indicou olha o código, e baixei o mysql-connector-java-3.1.14.zip, extrai o jar, e adicionei ao classpath no netbeans, compilei, mas também não funcionou

[code]
public class Conexao {

private static Connection con;
private static String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC   

public static Connection getConnection() {
    try {

        Class.forName(driverName);
        String url = "jdbc:mysql://192.168.0.100" + ":3306/" + "elshadai";
        String usuario = "remoto";
        String senha = "193745";

        if (con == null) {
            con = DriverManager.getConnection(url, usuario, senha);
            System.out.println("Conexão realizada com sucesso");
        } else {
            con = null;
            return getConnection();
        }

    } catch (SQLException e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
        System.exit(0);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    return con;
}

}[/code]

Engraçado é que eu consigo acessar o banco de dados pelo mysqlquerybrowser de outra máquina usando:
endereço: 192.168.0.100 porta:3306
usuario: remoto
senha: 193745

mas não consigo fazer isso via java, será algum problema com o conector?

Consegui enfim conectar.

O problema parece ser que o meu projeto tava um pouco bagunçado tinha uns jars estranhos de banco de dados do netbeans que estavam atrapalhando a conexão.

Fiz uma nova aplicação do zero, e aí funcionou tudo certinho! Obrigado pela ajuda.

Rapaz, estou passando pelo mesmo problema, porém não estou com jar a mais não, uso só dois jar, o do conector, versão mysql-connector-java-5.0.7-bin.jar e do projeto POI para gerar Excel poi-2.5.1-final-20040804.jar

tudo no MANIFEST Certinho, no BD tb está habilitado para aplicação remota, o engraçado é, isso só está acontecendo no Windows XP, aqui na empresa possui o windows XP e o Windows 2000, o servidor é um windows 2000, os clientes são 2000 e XP, os clientes acessam normalmente, já no XP quando a máquina tá zerada, ela funciona acessa normal, depois de um tempo, o windows XP não acessa mais a aplicação, ele dá exatamente essa mensagem ae.

Alguém saberia o que poderia ser?

Tenta as dicas acima que deve funcionar, não esqueça de reiniciar o servidor!
Melhor abrir outro tópico eu acho, e postar também a mensagem de erro pra galera poder ajudar.
Até mais.

[off]
mais um da série rescuscitando tópicos antigos :lol:
[/off]

EDIT: Coloquei entre aspas o texto da citação.