Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

hosting en interdominios
3.400 lecturas y 6 respuestas
  • Cerrado

    6

    Conexión remota con Java a una base de datos mySQL

    Hola a todos,

    he creado una base de datos con mysql en mi ordenador, para que funcione a modo servidor de forma que mi aplicación java pueda acceder a ella remotamente desde otro equipos.

    Para esto he seguido los siguientes pasos:

    - He convertido en estática mi dirección IP interna (ahora 192.168.1.35).

    - He creado en mi equipo la base de datos con mysql usando el puerto 3307.

    - Como mi IP externa es dinámica me cree un dns tipo vXXX.no-ip.info

    - He configurado la NAT de mi router para que deje pasar lo que vaya al puerto 3307 a mi IP local.

    Ahora bien, cuando intento conectar (incluso desde el propio ordenador en el que está la base de datos) de la siguiente forma:

     String url = "jdbc:mysql://vXXX.no-ip.info:3307/mex_bd";
     mi_conexion = DriverManager.getConnection(url, login, pass);

    me da un error tan largo que casi me da vergüenza postear:

     java.net.ConnectException
    
     MESSAGE: Connection timed out: connect
     STACKTRACE:
     java.net.ConnectException: Connection timed out: connect
    
     at java.net.PlainSocketImpl.socketConnect(Native Method)
    
     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    
     at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    
     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    
     at java.net.Socket.connect(Socket.java:516)
    
     at java.net.Socket.connect(Socket.java:466)
    
     at java.net.Socket.(Socket.java:366)
    
     at java.net.Socket.(Socket.java:208)
    
     at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
    
     at com.mysql.jdbc.MysqlIO.(MysqlIO.java:271)
    
     at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
    
     at com.mysql.jdbc.Connection.(Connection.java:1555)
    
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    
     at java.sql.DriverManager.getConnection(DriverManager.java:525)
    
     at java.sql.DriverManager.getConnection(DriverManager.java:171)
    
     at gestorBD.conectar(gestorBD.java:42)
    
     at main_clase.(main_clase.java:20)
    
     at main_clase$6.run(main_clase.java:243)
    
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    
     at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
     ** END NESTED EXCEPTION **
     Last packet sent to the server was 0 ms ago.

    Alguien sabe qué demonios está pasando? o qué es lo que he podido hacer mal o si debo hacer algo que se me ha escapado?

    Muchas gracias de antemano,

    V.

    Este tema es antiguo y puede contener información obsoleta. Abre un nuevo tema para publicar tu mensaje.
    • Cerrado

      Puerto 3306. ¿Accedes como root y con contraseña?. Revisa…

      Puerto 3306. ¿Accedes como root y con contraseña?. Revisa Firewall y antivirus que no bloquee la conexión/puertos. En el server de mysql, hay que configurar para que root tenga acceso remoto a la máquina.

      ¿Desde localhost accedes?. ¿Hay respuesta de ping en remoto?

      Slds.

    • Cerrado

      empieza desde fuera por que según router, desde dentro no te…

      empieza desde fuera por que según router, desde dentro no te va a dejar.

      primero, en local: telnet localhost 3307

      si conecta, bien. si no, prueba con 3306. si entra en el 3306, ese es el problema.

      después verifica el mapeo en tu router, y mira si puedes acceder por telnet desde fuera. vigila también que MySQL escuche en todas las interfaces (no tenga skip-networking, aunque eso sólo creo que está en sistemas con sockets, ergo linux)

      POR CIERTO, java es una jodida leonera... sigo sin comprender a los que usáis ese lenguaje, sólo sirve para webs de bancos mermadas en funcionalidad xD

      • Cerrado

        6

        telnet localhost 3307 --> correcto telnet vXXX.no-ip 3307 -->…

        telnet localhost 3307 --> correcto

        telnet vXXX.no-ip 3307 --> correcto

        incluso desde otro ordenador esto último también se puede...

        sin embargo desde el propio ordenador en el que está la BD (localhost) al intentar acceder a ella, me da el error kilométrico de arriba...

        pero si en la url en vez de lo de vXXX.no-ip.inf pongo la IP del ordenador (192.168.X.X) sí qu funciona en este, pero no funciona desde otro...

        vigila también que MySQL escuche en todas las interfaces

        Cómol?

        Revisa Firewall y antivirus que no bloquee la conexión/puertos. En el server de mysql, hay que configurar para que root tenga acceso remoto a la máquina.

        En el firewall ya he puesto que deje tranquilo y feliz al puerto 3307.Cómo puedo comprobar lo del server?

        Jejejejee, utilizo Java porque es requisito del proyecto, si no... jajajaja

      • Cerrado

        6

        java es un lenguaje muy potente y capaz de funcionar en…

        java es un lenguaje muy potente y capaz de funcionar en cualquier tipo de máquina. Para proyectos imporntantes es lo mejor que puedes usar, pero si lo que quieres hacer son pequeñas cosas con otros te puede valer.

      • Cerrado

        Boca de Pez Boca de Pez
        6

        recuerda que la ip dinamica es para acceder desde afuera y la…

        recuerda que la ip dinamica es para acceder desde afuera y la local es dentro de la red.