Como acessar um banco MySQL remoto na mesma rede?

6 respostas
Valter_Henrique

Oi GUJ, blz ?
Galera, um amigo meu conseguiu fazer um banco remoto em uma máquina aqui da minha rede.
Só que eu preciso acessar esse banco também.

Ele acessa com o seguinte hostname :

final private String urlBd = "jdbc:mysql://valterhenrique.sytes.net:";

Eu já tentei, mas não funciona:

final private String urlBd = "jdbc:mysql://localhost:";

Tentei também com o ip do computador que esta rodando o banco, mas também não funciona.

final private String urlBd = "jdbc:mysql://192.168.1.4:";

É uma conexão DAO com o JDBC.

Alguém tem alguma dica ?

Obrigado desde já pela atenção. =)

6 Respostas

yorgan

Tem que liberar o acesso remoto.
Aqui tem um tutorial: http://darkstrikerd.wordpress.com/2008/02/14/linux-permitindo-acesso-remoto-num-servidor-mysql/

[]'s
Daniel

iogui

Tira este “:” do final da uri de conexão e coloca o nome do banco de dados que vc vai acessar:

final private String urlBd = "jdbc:mysql://192.168.1.4/databaseName";
iogui

Também é bom ver se não tem nenhum firewall bloqueando a porta 3306 na máquina em que o mysql está instalado (se for um windows, acrescente uma regra para a liberação desta porta no firewall do windows)

Valter_Henrique

iogui:
Tira este “:” do final da uri de conexão e coloca o nome do banco de dados que vc vai acessar:

final private String urlBd = "jdbc:mysql://192.168.1.4/databaseName";

Oi meu velho,
então cara, já tem a exceção no windows que esta rodando o banco, tanto que meu amigo consegue acessar remotamente.

Sobre tirar o ‘:’ é só para dizer que virá a porta 3306 em seguida, pois irei concatenar a string com o numero da porta e tudo mais,rs.

public class ConexaoBD {

    private static ConexaoBD instance = null;
    private Connection con;
    private Statement stm;

    final private String urlBd = "jdbc:mysql://valterhenrique.sytes.net:";
    final private String porta = "3306";
    final private String schema = <schema>;
    final private String usuario = <usuario>;
    final private String senha = <senha;


    private ConexaoBD() throws DAOException {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(urlBd + porta + "/" + schema + "?user=" + usuario + "&password=" + senha);
            stm = con.createStatement();

        } catch (Exception e) {
            throw new DAOException("Erro ao conectar-se com o banco de dados");
        }
    }

    public static ConexaoBD getInstance() throws DAOException {
        if (instance == null) {
            instance = new ConexaoBD();
        }
        return instance;
    }

Esta assim no momento, com o valores entre ‘< >’ claro,rs.

Valter_Henrique

yorgan:
Tem que liberar o acesso remoto.
Aqui tem um tutorial: http://darkstrikerd.wordpress.com/2008/02/14/linux-permitindo-acesso-remoto-num-servidor-mysql/

[]'s
Daniel

O acesso já foi liberado Daniel , tanto que ele consegue acessar o banco remotamente, agora eu que estou na rede que possui o banco não… isso que tah estranho pra mim.

iogui

Bom… então se vc já configurou o acesso remoto, já liberou as portas do firewall, não temos mais o que ajudar a menos que vc poste uma exception ou alguma informação mais conclusiva sobre o problema.
Imagindo que, se vc está tentando acessar e não está conseguindo, deve estar sendo lançada alguma exception, certo?

Dica:

Troque a linha:

throw new DAOException("Erro ao conectar-se com o banco de dados");

por isto:

throw new DAOException("Erro ao conectar-se com o banco de dados", e);

Se o seu DAOException não possui construtor que aceite uma msg e um throwable, crie um pois tem mensagem de erro que pode estar sendo mascarada por esse seu código.
Na classe que estiver fazendo uso desta classe de conexão, coloque um cast(DAOException e) e dê um printstacktrace.
Se estiver usando log4j, use o método com dois argumentos:

log.debug(e,e);

Pois o segundo argumento pega o throwable e printa a stacktrace.

[]s

Criado 29 de janeiro de 2011
Ultima resposta 29 de jan. de 2011
Respostas 6
Participantes 3