ubuntuusers.de

MySQL mit Java

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

underwood

Avatar von underwood

Anmeldungsdatum:
27. Oktober 2007

Beiträge: 89

Hallo zusammen,

ich versuche im Moment eine Datenbankanbindung in Java auf die Reihe zu kriegen. Ich bin diversen Anleitungen aus dem Internet gefolgt und komme trotzdem nicht zum Erfolg.

Mein Code sieht im Wesentlichen so aus:

import java.sql.*;

public class DBAnbindung {
	public static void main( String[] args ) 
	  { 
	    try 
	    { 
	      Class.forName( "com.mysql.jdbc.Driver" ).newInstance(); 
	    } 
	    catch ( Exception e ) 
	    { 
	      e.printStackTrace(); 
	      return; 
	    } 
	 
	    Connection con = null; 
	 
	    try 
	    { 
	      con = DriverManager.getConnection("jdbc:mysql://localhost/datenbank","user","datenbank"); 
	      Statement stmt = con.createStatement(); 
            
            (...)

	  } 
}

Die Datenbank 'datenbank' ist vorhanden und mysql gestartet. Beim Aufruf von DriverManager.getConnection() bekomme ich den Fehler:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Ich benötige keine direkte Lösung für das Problem (auch wenns toll wäre, wenns die gibt 😉 ), ich würde mich schon freuen, wenn ich bloß wüsste, an welcher Stelle ich überhaupt suchen muss.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

Kannst Du anderweitig auf die Datenbank zugreifen?

Du könntest mit nmap prüfen, ob die Datenbank an localhost lauscht:

nmap -p 3306 localhost

mysql hat sicher auch logfiles (/var/log/... ) - da würde ich auch mal nachlesen.

genios Team-Icon

Avatar von genios

Anmeldungsdatum:
7. März 2008

Beiträge: 695

Wohnort: Goch

Hast Du die jdbc Ecxeptions unter MySQL für Deine Datenbankversion herunter geladen und in den richtigen Ordner kopiert? Der JDBConnector liegt den Java Paketen nicht bei, muss separat installiert werden.

Versuch mal eine JDBC Verbindung zwischen OpenOffice und MySQL, so kannst Du den Weg testen.

underwood

(Themenstarter)
Avatar von underwood

Anmeldungsdatum:
27. Oktober 2007

Beiträge: 89

Danke schonmal für die Hinweise.

@ user unknown

Über phpmyadmin kann ich problemlos auf die Datenbank zugreifen, ja. Und es gibt tatsächlich eine log-Datei. Drin steht allerdings nichts ☺ Der Test mit nmap ergibt:

$ nmap -p 3306 localhost

Starting Nmap 4.76 ( http://nmap.org ) at 2008-11-24 21:01 CET
Interesting ports on localhost (127.0.0.1):
PORT     STATE  SERVICE
3306/tcp closed mysql

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

closed bedeutet lediglich, dass kein Programm darauf zugreift, wenn ich die man-pages richtig verstehe, ja?

@ genios

JDBC habe ich heruntergeladen (Sonst dürfte "Class.forName( "com.mysql.jdbc.Driver" )" doch auch schon nicht funktionieren, oder?).

Ich habs also mal mit OpenOffice versucht. Dort habe ich zunächst die Möglichkeit die JDBC-Treiberklasse anzugeben und zu testen. Der Test endet auch erfolgreich. Nachdem ich im nächsten Schritt allerdings meinen Benutzernamen und mein Passwort eingegeben habe und die Verbindung testen möchte kommt auch hier ein "Communications link failure. Last packet sent to the server was 0 ms ago."

Mein Gefühl sagt mir, dass ich etwas grundlegend falsch mache.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

closed bedeutet lediglich, dass kein Programm darauf zugreift, wenn ich die man-pages richtig verstehe, ja?

Ohne die manpage zu haben, behaupte ich ...

nmap localhost -p 5432

Starting Nmap 4.53 ( http://insecure.org ) at 2008-11-25 02:55 CET
Interesting ports on localhost (127.0.0.1):
PORT     STATE SERVICE
5432/tcp open  postgres

...nein.

Die Configurationsdateien von mysql erlauben vielleicht die verbosity der Logfiles hochzusetzen, und Zugriffsrechte für Netzwerkzugriffe zu setzen - vielleicht ist das möglich.

Die Meldung "Communications link failure." läßt sich aber sicherlich gut googeln, und mySql-Foren gibt es sicher auch.

underwood

(Themenstarter)
Avatar von underwood

Anmeldungsdatum:
27. Oktober 2007

Beiträge: 89

Google und das mysql-Forum waren auch meine ersten Ideen. Doch obwohl es gefühlte 1000 Threads zu "Communications link failure" gibt, gab es so gut wie nie eine Antwort auf diese Frage, geschweige denn eine Lösung (und wenn doch, dann hatte sie nicht zu mir gepasst).

Eigenartigerweise bin ich erst jetzt auf die Idee gekommen mal ins archlinux-Forum zu schauen (bin einfach nicht darauf gekommen, dass das ein distribution-spezifisches Problem sein könnte) und siehe da, Arch erlaubt mysqld per default keine tcpip Verbindung. Somit muss in /etc/hosts.allow lediglich die Zeile

 mysqld:ALL 

ergänzt werden und es funktioniert.

DocBriggs

Anmeldungsdatum:
7. April 2008

Beiträge: 335

Oder man merkt sich einfach folgenden simplen Spruch:

"Ist ein Port closed...ist er closed."

Antworten |