Problems connecting java with mysql local network

1

I have a server Mysql installed and started in Raspberry pi with local address 192.xxx.0.1xx connected to the network and from another computer I try to establish a connection with a Java program with this code:

public class BaseDatosMySQL {

private Connection conexion;

public static void main(String[] args) {
    BaseDatosMySQL baseDatos = new BaseDatosMySQL();
    baseDatos.conectar();
    Tabla tabla = new Tabla(baseDatos.getConexion());
    String[] nombreColumnas = { "id", "nick" };
    String[] tipoColumnas = { "INT AUTO_INCREMENT, PRIMARY KEY(id)", "TEXT" };
    tabla.crearTabla("usuarios", nombreColumnas, tipoColumnas);
    baseDatos.desconectar();
}

public void conectar() {
    try {

        Class.forName("com.mysql.jdbc.Driver");
        conexion = DriverManager.getConnection("jdbc:mysql://1XX.168.0.1XX/localhost:3306/ChatEscrito",
                "root", "lapasscorrecta");
        System.out.println("Conexion a la base de datos realizada");
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }
}

public void desconectar() {
    try {
        conexion.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

public Connection getConexion() {
    return conexion;
}

public void setConexion(Connection conexion) {
    this.conexion = conexion;
}

}

What causes me these errors:

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:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2192)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2225)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at cuerpo.BaseDatosMySQL.conectar(BaseDatosMySQL.java:30)
at cuerpo.BaseDatosMySQL.main(BaseDatosMySQL.java:16)
Caused by: java.net.ConnectException: Conexión rehusada (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
... 16 more
Exception in thread "main" java.lang.NullPointerException
at utilidades.Tabla.crearTabla(Tabla.java:22)
at cuerpo.BaseDatosMySQL.main(BaseDatosMySQL.java:20)

Let's see if you can help me.

  

Note: Public IP address is hidden by xx

    
asked by latiagertrutis 27.06.2017 в 16:56
source

2 answers

1

What is wrong with your code is the line where you form the URL of the MySQL connection. Staying in the following way:

conexion = DriverManager.getConnection("jdbc:mysql://1XX.168.0.1XX:3306/ChatEscrito","root", "lapasscorrecta");

Since it points to the IP of your server machine.

    
answered by 27.06.2017 / 17:11
source
0

It's because the server in your raspberry does not have remote access active.

You must modify the file in /etc/mysql/my.cnf

Look for the following line:

bind-address           = 127.0.0.1

And comment it by adding # in front:

#bind-address           = 127.0.0.1

Then restart the service.

Be careful! With this you make any ip can connect to the server, if you only want to connect an ip, instead of commenting the line you can put the ip of the device you are going to access.

    
answered by 27.06.2017 в 17:49