Ligação remota a base de dados

Boas, a situação é a seguinte: eu desenvolvi uma aplicação que guarda os dados numa base de dados e e agora para implementá-la a base de dados tem que estar alojada num servidor e a aplicação noutros computadores. O que acontece é o seguinte: se eu puser a base de dados num computador com o windows e um serviço de gestão de base de dados(neste caso o workbench) consigo aceder á base de dados sem problemas, mas quando tento ligar á base de dados no servidor(que tem o ubuntu server instalado e utiliza o phpmyadmin como serviço de gestão da base de dados) não consigo aceder.
O código que eu estou a utiliar para aceder é o seguinte :

[code]try {
ip = JOptionPane.showInputDialog(this, “Por favor insira o endereço IP do servidor.”, “INSIRA IP”, JOptionPane.INFORMATION_MESSAGE);
user = JOptionPane.showInputDialog(this, “Por favor insira o nome de utilizador de acesso à base de dados.”, “INSIRA NOME DE UTILIZADOR”, JOptionPane.INFORMATION_MESSAGE);
pass = JOptionPane.showInputDialog(this, “Por favor insira a palavra passe de acesso à base de dados.”, “INSIRA PASS”, JOptionPane.INFORMATION_MESSAGE);
String url = “”;
String ipEncriptado = encriptador.encrypt(ip);
String userEncriptado = encriptador.encrypt(user);
String passEncriptada = encriptador.encrypt(pass);

            Class.forName("com.mysql.jdbc.Driver");
                url = "jdbc:mysql://" + ip + ":3306/BaseDadosCookManager";
                ligacao = DriverManager.getConnection(url, user, pass);
                instrucao = ligacao.createStatement();
                //JOptionPane.showMessageDialog(this, "Ligou com sucesso");
                criarTXT(ipEncriptado, userEncriptado, passEncriptada);
                return true;
     } catch(CommunicationsException ex){
         Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        JOptionPane.showMessageDialog(this, "Erro de sql, por favor contacte o programador...\n" + ex.getMessage(), 
                "ERRO", JOptionPane.ERROR_MESSAGE);
           
    } catch (SQLException ex) {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        JOptionPane.showMessageDialog(this, "Erro de sql, por favor contacte o programador...\n" + ex.getMessage(), 
                "ERRO", JOptionPane.ERROR_MESSAGE);
        
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        JOptionPane.showMessageDialog(this, "Erro de sql, por favor contacte o programador...\n" + ex.getMessage(), 
                "ERRO", JOptionPane.ERROR_MESSAGE);
    }[/code]

Nota: eu encripto os dados e guardo-os num ficheiro .txt para não ser preciso inserir os dados de login cada vez que se inicia o programa.

O erro que dá quando eu tento aceder ao servidor é o seguinte:

[quote]SEVERE: null
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:344)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at Login.ligarBaseDados2(Login.java:265)
at Login.ligarBaseDados(Login.java:323)
at Login.(Login.java:36)
at Login$2.run(Login.java:169)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.(Socket.java:425)
at java.net.Socket.(Socket.java:241)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:294)
… 32 more[/quote]

Alguém pode ajudar-me?
Cumps

Primeiramente você deve verificar se o serviço mysql do servidor que você informou está startado através da URL: jdbc:mysql://" + ip + ":3306/BaseDadosCookManager;
Verifique se pelo SGBD localmente você consegue acessar o banco de dados;
Tente pingar na máquina do banco de dados e também verifique se a porta 3306 está listando no servidor.

rhawan
1 - verificar se o serviço mysql do servidor está startado através da URL: jdbc:mysql://" + ip + ":3306/BaseDadosCookManager : como assim, verificar se o serviço mysql está a correr? está;
2 - verificar se o banco de dados é acessível localmente: é, no phpmyadmin eu consigo editar as tabelas;
3 - verificar se a porta 3306 está listando no servidor: sim, um teste mostra que a porta 3306 tem livre tráfego;
Mais alguma ideia?