# "Connection timed out: connect" bei MySQL-Verbindu



## Karl Nickel (26. Feb 2007)

Moin,

ich versuche gerade eine Verbindung zu einem MySQL-Server im Internet aufzubauen. Allerdings erhalte ich die Fehlermeldung "Connection timed out: connect" und verstehe nicht wieso. Denn auf meinem Rechner zuhause läuft das ganze Datenbank-Geraffel ohne Probleme - hier in der Schule allerdings nicht. Die vollständige Fehlermeldung lautet:

```
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

MESSAGE: java.net.ConnectException: Connection timed out: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection timed out: connect
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
	at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
	at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at MySQL.Test(MySQL.java:137)
	at Thread_wAuthentification_button_Login.run(Thread_wAuthentification_button_Login.java:34)
	at java.lang.Thread.run(Unknown Source)

** END NESTED EXCEPTION **

Last packet sent to the server was 100 ms ago.
	at com.mysql.jdbc.Connection.createNewIO(Connection.java:2643)
	at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at MySQL.Test(MySQL.java:137)
	at Thread_wAuthentification_button_Login.run(Thread_wAuthentification_button_Login.java:34)
	at java.lang.Thread.run(Unknown Source)
```
Also ich habe zwei Theorien:
- das Internet ist zu lahm (Google brauch 15 Sekunden, bis es geladen ist :autsch: )
- es liegt am Zugang über einen Proxy (ich denke, es liegt daran)

Hat jemand vielleicht eine Idee, warum ich einen Timeout bekomme bzw. wie ich den Proxy (unkompliziert) umgehen kann, ohne das halbe Schulnetz auszuhebeln?

P.S.:
An den Verbindungsdaten liegt es nicht - das sind die gleichen wie zuhause :cry: 

Danke für die Erleuchtungen!


----------



## AlArenal (26. Feb 2007)

Du hast es nicht erwähnt (was du hättest tun sollen), aber ich nehme einmal an deine MySQL läuft irgendwo im Internet und ist für Zugriff von außen freigeschaltet (weswegen es bei dir von daheim aus läuft). Der wahrscheinlichste Fall ist schlichtweg, dass bei euch in der Schule der MySQL-Port für ausgehenden Verkehr nicht freigeschaltet ist - zumindest sollte es so sein, wenn nicht der externe MySQL-Server Bestandteil des Schulprojekts ist.


----------



## Karl Nickel (26. Feb 2007)

> ... eine Verbindung zu einem MySQL-Server im Internet...[/code]
> 
> Aber, aber, aber ich hab doch gesagt, dass der im Internet steht :wink:
> 
> Das mit dem gesperrten Port könnte gut sein ... da muss ich mich mal beim Admin erkundigen :autsch: [/code]


----------



## AlArenal (26. Feb 2007)

EDIT 

Ich brauch dringend Kaffee...


----------



## Karl Nickel (26. Feb 2007)

Kein Problem :wink: 

Der Port ist tatsächlich geschlossen und geöffnet werden kann er nicht. SSH-Tunnel mit Port-Mapping auf den MySQL-Server geht auch nicht - der SSH-Port ist zu (wie fast alle Ports hier in der Schule, bis auf Port 80 *glücklichbin* - wenigstens Internt). Hmpf, tolle Sache. Man soll eine clientseitige Datenbankanwendung schreiben und alle Ports sind zu. Was für eine schei***. Kennst du vielleicht 'ne Möglichkeit, wie ich die Verbindung trotzdem zustande bekomme?


----------



## AlArenal (26. Feb 2007)

Muckefuck wie SSH oder MySQL auf Port 80 zu legen ziehe ich gar nicht erst in Betracht. Da bleibt unter Beibehaltung von JDBC eigentlich nur eine integrierte Datenbank zu verwenden, wie HSQLDB, H2 oder Java DB. Da benötigst du keinen DB-Server der mitläuft und hast alles an einer Stelle zusammen.


----------



## Karl Nickel (26. Feb 2007)

Umlegen geht eh nicht, weil der MySQL-Server unser Firmenserver ist und mein Chef erzählt mir was, wenn ich da den Port 3306 mal eben so auf Port 80 lege. Dann geht nüscht mehr, weder Webapplikationen noch MySQL ... aber anders geht es auch nicht. Hier in der Schule sind so viel ich weiß nur zwei Ports offen. Das ist Port 80 und ein anderer, glaube 334. Den Server könnte ich zwar nun auf 334 lauschen lassen, geht ja aber wie gesagt nicht. Gibt es eventuell irgendwelche Weiterleitungs-Proxys, die zum Beispiel auf Port 80 lauschen und dann umleiten auf Port 3306 zu unserem MySQL-Server? Das wäre die ideale Lösung. Denn eine "interne" Datenbank kann ich nicht verwenden, da es mehrer Clients gibt, die alle auf eine zentrale Datenbank zugreifen sollen...


----------



## AlArenal (26. Feb 2007)

So lange die Clients alle in einem Netz sind kannst du doch problemlos einen der Rechner als DB-Server laufen lassen, oder? Für HSQLDB und H2 musst du auch nichts lokal installieren, brauchst also keine Admin-Rechte.

Ich meine, die können ja euch doch scherlich ne Aufgabe bearbeiten lassen, die mit der vorhandenen Infrastruktur nicht zu bewältigen ist?

Wenn du noch irgendwo im I-Net nen anderen Root-Server hast, wo du Ports umbiegen kannst, könntest du darüber mit SSH forwarden, allerdings würde ich zunächst mal ein Wort mit deinem Chef reden was ihm überhaupt einfällt den MySQL-Port nach außen freizuschalten


----------



## Karl Nickel (26. Feb 2007)

Ich musste ihn schon überreden, den MySQL-Port nach außen hin freizuschalten. Per "default" ist der normalerweise zu, für das Projekt aber offen. Der MySQL-Server darf nicht zusammen mit den Clients in einem Netz sein. Er soll extern bleiben, damit man "von überall" auf ihn zugreifen kann. Wegen dem Forwarding frag ich am besten mal meinen Chef. Vielleicht können wir irgendwie einen virtuellen Server aufsetzen, der auf die 3306 umleitet. So könnte man auch den Port nach außen hin wieder schließen.

Das wir hier in der Schule Projekte realisieren dürfen, die technisch nicht möglich sind, ist hier eher der Normalfall. Letztes Jahr zum Beispiel sollten wir eine Computerecke mit mehreren Clients und einem gemeinsam genutzten Server einrichten. Die Clients hatten 350 MHz, sollten SuSE Linux, Windows XP und eine Virtualisierungs-Software haben und das ganze sollte auch noch funktionieren - hat's nur nicht. Jetzt sollen wir eine Datenbanksoftware ohne Java-Kenntnisse und ohne Möglichkeit auf eine Datenbank zuzugreifen erstellen


----------



## AlArenal (26. Feb 2007)

Herzliches Beileid zu euren inkompetenten Lehrern 

Mal interessehalber: Kümmert sich keiner um die Qualität der Ausbildung und Ausbilder?


----------



## Karl Nickel (26. Feb 2007)

Qualiwas? Also die Ausbildung in den Betrieben ist in Ordnung, nur die Schule + IHK kümmert sich da herzlich wenig drum :roll:


----------

