BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

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

vio

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 está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
LineBenchmark

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.

adrinavarro

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

🗨️ 2
vio

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

fdap

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.

BocaDePez

hey compa, a mi me aparece la ultima linea "Last packet sent to the server was 0 ms ago." porque el servidor no tiene el servicio de MYSQL encendido...

🗨️ 1
BocaDePez

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