Auf die Gefahr hin mich jetzt ganz doll als Java-Trottel zu outen:
Gibt es Unterschiede in der Verwendung von JDBC auf Windows und Linux? Ich weiss natuerlich, dass Java entwickelt wurde um auf allen Plattformen zu laufen, aber:
Ich habe das Problem, dass ich eine Applikation auf einem Windowsrechner habe, die Datenbank auf einer Linuxmaschine. Alles funktioniert. Packe ich die Anwendung auf die gleiche Linuxmaschine wie die Datenbank, kriege ich keinen Zugriff. In den MySQL Logifles steht dann ein Access-Denied Eintrag.
Packe ich die MySQL Datenbank auch auf den Windowsrechner funktioniert es wieder vom (gleichen) Windowsrechener aus, aber nicht vom Linuxrechner. Fehler in der Applikation habe ich ausgeschlossen, da keine Exceptions geworfen werden und da ich an den Logfiles von mysql sehe, dass ja eine Anfrage stattfindet.
Die Privilegien fuer den entsprechenden User liegen alle vor, einmal fuer den Host "%", einmal fuer den FQHN, einmal fuer localhost. In den Logifles steht der Username und Hostname, genau fuer den sind aber ALLE Privilegien angelegt, die Applikation auf dem Windowsrechner verwendet den selben User und da funktionierts. Von der Konsole kann ich mich mit den gleichen Zugangsdaten am MySQL-Client anmelden. Kurz und gut: Die Konfiguration von MySQL scheint fehlerfrei zu sein.
Ich habe zwei Sysadmins in meiner Abteilung gefragt, die sich lange die Datenbank und deren Konfiguration angeguckt haben und irgendwann nur noch Axelzuckend sagten, dass es an der Applikation liegen muss, aber da finde ich einfach keine Fehler, zumal es ja unter Windows problemlos funktioniert und ich sehe, dass die Anfrage an der DB stattfidnet, aber abgewiesen wird. Egal wen ich frage, niemand kann mir sagen woran es liegen kann. Dass die Privilegien richtig gesetzt sind konnte mir der MySQL-Admin auch bestaetigen.
Warum poste ich das hier und nicht im Datenbanken/MySQL-Forum?
Habe ich (http://www.tutorials.de/tutorials230472.html), aber da ich mittlerweile ja keine andere Wahl habe als anzunehmen, dass es mit der Applikation zusammenhaengt denke ich ein Post mit den neu gewonnenen Erkenntnissen in der Java-Ecke ist o.k. Ich hoffe instaendig, mir wird das nicht als Crosspost angekreidet.
Was mich noch stutzig macht, die Applikation (die nicht alleine von mir entwickelt wurde), gibt den String "Database is not available" zurueck, diesen finde ich nirgendwo in den Sourcen, daher gehe ich davon aus, dass das vom Connector/J kommt.
Alles in allem bin ich echt ratlos. Habe jetzt mehrere Tag mit der Fehlersuche zugebracht ohne auf irgendwas zu stossen, habe duztende von Foren und Newsgroups durchsucht, aber was aehnliches hab ich nicht gefunden, immer nur der gleiche Hinweis, der selbst auf der MySQL Seite mit den FAQ zu Access-Denied Problemen zu finden ist:
Daher bleibt mir als Letztes anzunehmen, dass es wohl doch einen Unterschied gibt zwischen der Applikation auf Windows und Linux. Kennt irgend jemand einen Parameter, eine Option oder irgendwas, was man beim Connecten mitgeben muss?
Falls jemand den Code sehen will, sagt bescheid, moechte nicht einfach alle Klassen die daran beteiligt sind blind posten, das waere naemlich sehr viel, gleiches gilt fuer die Logfiles (oder zumindest relevante Daten daraus).
Gruss und hoffe auf Antwort,
DH
Gibt es Unterschiede in der Verwendung von JDBC auf Windows und Linux? Ich weiss natuerlich, dass Java entwickelt wurde um auf allen Plattformen zu laufen, aber:
Ich habe das Problem, dass ich eine Applikation auf einem Windowsrechner habe, die Datenbank auf einer Linuxmaschine. Alles funktioniert. Packe ich die Anwendung auf die gleiche Linuxmaschine wie die Datenbank, kriege ich keinen Zugriff. In den MySQL Logifles steht dann ein Access-Denied Eintrag.
Packe ich die MySQL Datenbank auch auf den Windowsrechner funktioniert es wieder vom (gleichen) Windowsrechener aus, aber nicht vom Linuxrechner. Fehler in der Applikation habe ich ausgeschlossen, da keine Exceptions geworfen werden und da ich an den Logfiles von mysql sehe, dass ja eine Anfrage stattfindet.
Die Privilegien fuer den entsprechenden User liegen alle vor, einmal fuer den Host "%", einmal fuer den FQHN, einmal fuer localhost. In den Logifles steht der Username und Hostname, genau fuer den sind aber ALLE Privilegien angelegt, die Applikation auf dem Windowsrechner verwendet den selben User und da funktionierts. Von der Konsole kann ich mich mit den gleichen Zugangsdaten am MySQL-Client anmelden. Kurz und gut: Die Konfiguration von MySQL scheint fehlerfrei zu sein.
Ich habe zwei Sysadmins in meiner Abteilung gefragt, die sich lange die Datenbank und deren Konfiguration angeguckt haben und irgendwann nur noch Axelzuckend sagten, dass es an der Applikation liegen muss, aber da finde ich einfach keine Fehler, zumal es ja unter Windows problemlos funktioniert und ich sehe, dass die Anfrage an der DB stattfidnet, aber abgewiesen wird. Egal wen ich frage, niemand kann mir sagen woran es liegen kann. Dass die Privilegien richtig gesetzt sind konnte mir der MySQL-Admin auch bestaetigen.
Warum poste ich das hier und nicht im Datenbanken/MySQL-Forum?
Habe ich (http://www.tutorials.de/tutorials230472.html), aber da ich mittlerweile ja keine andere Wahl habe als anzunehmen, dass es mit der Applikation zusammenhaengt denke ich ein Post mit den neu gewonnenen Erkenntnissen in der Java-Ecke ist o.k. Ich hoffe instaendig, mir wird das nicht als Crosspost angekreidet.
Was mich noch stutzig macht, die Applikation (die nicht alleine von mir entwickelt wurde), gibt den String "Database is not available" zurueck, diesen finde ich nirgendwo in den Sourcen, daher gehe ich davon aus, dass das vom Connector/J kommt.
Alles in allem bin ich echt ratlos. Habe jetzt mehrere Tag mit der Fehlersuche zugebracht ohne auf irgendwas zu stossen, habe duztende von Foren und Newsgroups durchsucht, aber was aehnliches hab ich nicht gefunden, immer nur der gleiche Hinweis, der selbst auf der MySQL Seite mit den FAQ zu Access-Denied Problemen zu finden ist:
If you are able to connect using the mysql client, the problem lies with your program, not with the access privileges.
Daher bleibt mir als Letztes anzunehmen, dass es wohl doch einen Unterschied gibt zwischen der Applikation auf Windows und Linux. Kennt irgend jemand einen Parameter, eine Option oder irgendwas, was man beim Connecten mitgeben muss?
Falls jemand den Code sehen will, sagt bescheid, moechte nicht einfach alle Klassen die daran beteiligt sind blind posten, das waere naemlich sehr viel, gleiches gilt fuer die Logfiles (oder zumindest relevante Daten daraus).
Gruss und hoffe auf Antwort,
DH