# Datenbankzugriff auf externe Mysql DB



## seejay (13. Jun 2007)

Hallo,
p.s. benutze Netbeans
ich möchte auf eine Datenbank zugreifen, die auf einem Webserver liegt. Ich habe dazu folgenden Code:


```
final String hostname = /URL ohne http://
        final String port = "3306"; 
        final String dbname = /DBNAME; 
        final String user = /DBUSER; 
        final String password = /DBPW; 

        try { 
            Class.forName( "org.gjt.mm.mysql.Driver" ).newInstance();
        } 
        catch (Exception e) { 
            System.err.println("Unable to load driver."); 
            e.printStackTrace(); 
        } 
        try {  

            conn = DriverManager.getConnection("jdbc:mysql://" + hostname + ":" + port + "/" + dbname, user, password);	    
            stmt = conn.createStatement();
        } 
        catch (SQLException sqle) { 
            System.out.println("SQLException: " + sqle.getMessage()); 
            System.out.println("SQLState: " + sqle.getSQLState()); 
            System.out.println("VendorError: " + sqle.getErrorCode()); 
            sqle.printStackTrace(); 
        } 
     }
```
bei einer Access DB auf dem Rechner hat es geklappt. Hier bekomm ich aber immer folgende Fehlermeldung:
SQLException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.UnknownHostException
MESSAGE: hostname

STACKTRACE:

java.net.UnknownHostException: hostname
        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)

Muss ich da noch etwas einstellen oder hab ich etwas falsch gemacht?

Gruß
seejay


----------



## kleiner_held (13. Jun 2007)

Der hostname ist anscheinend falsch. Wie die richtig Angabe lautet kann ich dir verstaendlicherweise nicht sagen, aber der Hostname muss in etwa so aussehen: *java.sun.com*, also keine URL sein.


----------



## seejay (13. Jun 2007)

komisch die adresse müsste stimmen. 
subdomain.haupdomain.de
funktioniert aber net. könnte es noch wo anders dran liegen? bzw sind im code keine fehler?


----------



## kleiner_held (13. Jun 2007)

Naja in deinem code machst du ja nicht viel mehr als den Treiber laden und die Verbindung herstellen.
Die Fehlermeldung ist an sich auch sehr eindeutig - UnknownHostException bedeutet dass er den hostnamen nicht aufloesen kann (keine IP Adresse dazu finden kann).


----------



## seejay (14. Jun 2007)

ok danke. Dachte vllt, dass man noch ne bibliothek laden müsste oder so, die für die auflösung der adresse zuständig ist. Also kann es nur noch an einem Fehler in der Domain oder Firewall/Portproblem liegen.


----------



## AlArenal (14. Jun 2007)

Doku hat gesagt.:
			
		

> Thrown to indicate that the IP address of a host could not be determined.



Also nix Firewall.. es sei denn die blockt DNS (Port 53)


----------



## seejay (14. Jun 2007)

ah ich hab mich jetzt mal schlau gemacht, wir haben im Lan einen eigenen DNS Server und deshalb bekomm ich keine Verbindung. Gibt es ne Möglichkeit irgendwie aus dem Lan zu kommen? Oder dürfte ich mit der IP Adresse weiter kommen, wenn ich irgendwie dran komme?


----------



## P3AC3MAK3R (14. Jun 2007)

Ich würde als ersten Wurf statt dem Hostnamen - wie von Dir bereit angedacht - die IP-Adresse verwenden.


----------



## seejay (14. Jun 2007)

habe es jetzt mit der IP adresse porbiert. aber dieser aufruf wird blockiert. Irgendwie hat da jede Subdomain die gleiche IP und über die IP kann man nicht drauf zu greifen auch nicht über einen Browser. Gibt es die Möglichkeit über nen Proxy zu gehen? oder wird des bereits automatisch gemacht? Es gibt doch viele Programme bei denen man den Port umstellen kann, würde dies auch noch gehen?


----------



## AlArenal (14. Jun 2007)

seejay hat gesagt.:
			
		

> habe es jetzt mit der IP adresse porbiert. aber dieser aufruf wird blockiert. Irgendwie hat da jede Subdomain die gleiche IP und über die IP kann man nicht drauf zu greifen auch nicht über einen Browser. Gibt es die Möglichkeit über nen Proxy zu gehen? oder wird des bereits automatisch gemacht? Es gibt doch viele Programme bei denen man den Port umstellen kann, würde dies auch noch gehen?



Es ist völlig egal welche Domain auf dem Server diegleiche IP hat. Das ist eine Webserverangelegenheit und die ist für deine Belange in diesem Fall unerheblich. Einzig interessant ist, ob der MySQL Server so konfiguraiert ist auf der IP zu lauschen, externe Verbindungen zu erlauben und ob der verwendete Benutzer in MySQL die erforderlichen Rechte hat sich von extern zur gewünschten DB zu verbinden.

Siehe MySQL Online Doku


----------

