PC-Start Problem JDBC Connection

J90

Aktives Mitglied
Hallo,

nachdem ich im offiziellen MySQL Forum keine Antwort erhalten habe, versuche ich mal hier mein Glück.
Aufgrund der Verwischtheit des Themengebiets poste ich meine Frage in dieser Untergruppe.

Ich nutze Java Applications (als JIT-exe), welche beim automatischen Start auf MySQL DB zugreifen. Mein Problem ist nun,
dass sich meine MySQL DB Connection nur in der Workbench durch Klick öffnen lässt; wird dieser Schritt nicht ausgeführt, kann mit JDBC keine Verbindung aufgebaut werden. Der Prozess 'mysqld.exe' startet normal nach dem Systemstart, nur das manuelle Öffnen in der Workbench ist noch notwendig (Wieso überhaupt? Irgendwas mit Admin-Rechten zu tun vll.?)

Ich meine dieses Problem zu haben, seitdem ich MySQL neuinstalliert habe, was kann ich tun? Wenn jemand eine Idee hat, wäre das sehr praktisch, da es wirklich sehr nervtötend im Alltag ist...

Beste Grüße,
 
Ich würde dich ja eher ans offizielle Mysql Forum verweisen - scheint eher ein Mysql Problem zu sein.

Was ist den die Fehlermeldung, die die Anwendung ausspuckt? Ansonsten mal im Mysql-Ordner nach Configs schauen (sollten hoffentlich textbasiert sein - mysqld.cfg/.conf) und schauen ob es da irgendwelche Optionen gibt.
 
Mein Problem ist nun,
dass sich meine MySQL DB Connection nur in der Workbench durch Klick öffnen lässt; wird dieser Schritt nicht ausgeführt, kann mit JDBC keine Verbindung aufgebaut werden.
lol, das hab ich auch noch nicht gehört.

Als kleine Ergänzung zur Antwort von @LimDul: Da Du von einer EXE sprichst, gehe ich mal von Windows aus. Schon mal die Einstellungen des Diensts überprüft? Vielleicht steht der auf manuell und das Workbench schiebt einfach den Dienst an (EDIT: ganz übersehen, dass Du schon geschrieben hast, dass mysqld startet... strange). In den Einstellungen solltest Du auch sehen können, wo die ini-Datei (my.ini) liegt. Standardmäßig dürfte die unter %PROGRAMDATA%\MySQL\MySQL Server <MySQL-Server-Version>\my.ini abgelegt sein, ausschlaggebend ist aber das, was in den Einstellungen des Diensts steht.

Ansonsten gilt: ganz wichtig wäre die Fehlermeldung der Anwendung, wie LimDul schon geschrieben hat. Auch ein Blick in die Logfiles (normalerweise im data-Verzeichnis) kann hilfreich sein.
 
Um mein Problem nochmal genauer zu präzisieren: Wenn ich NetBeans verwende, habe ich das gleiche Problem mit dem Verbindungsaufbau mithilfe von JDBC. Wenn ich 'mysqld.exe' beende und neu starte, ergibt sich wieder das Standard Verbindungsproblem (in NetBeans)

Could not create connection to database server. Attempted reconnect 3 times. Giving up. (localhost,3306,root)

und taucht erst nicht mehr auf, wenn die DB manuell in der Workbench geöffnet wurde. Somit kann im Log im Grunde nichts drin stehen.

Was könnte in der 'my.ini' verändert werden? Anscheinend habe ich hier Pech gehabt und irgendetwas ist einfach verstellt (wie es mit der MySQL Installation ja mal schnell passieren kann...), hatte dieses Problem früher noch nicht.

Hat jemand eine Idee, was das Anklicken/Öffnen einer Connection in der Workbench für einen Prozess auslöst bzw. was der Effekt ist?
 
Erst einmal solltest Du uns die my.ini zeigen! Uns fehlen alle Details!

Was mir noch als Idee durch den Kopf geht: Hast Du evtl. mehrere mysql Installationen? Du startest dann eine Instanz, die dann ggf. nicht auf dem default Port hört und die Workbench startet dann eine weitere Instanz?

Was man prüfen kann:
Nach dem Rechnerstart - ohne Workbench - einfach einmal ausführen:
netstat -an | find "LISTENING"

Was für Ports werden da genannt?

Dann Workbench starten und ausführen. Hat sich dabei etwas geändert?
 
Somit kann im Log im Grunde nichts drin stehen.
Noch ein Nachtrag: das ist eine voreilige Schlussfolgerung. Natürlich kann im MySQL-Log etwas stehen und auch der ganze Stacktrace wäre interessant gewesen, denn "could not create connection to database server" kann ja verschiedene Ursachen haben; dazu sollten sich im Stacktrace Details finden lassen (zum Beispiel "Connection refused"). Es gibt eben viele Möglichkeiten, spontan fallen mri unterschiedliche Protokolle, unterschiedliceh Ports (oder die von Konrad genannten MySQL-Instanzen), nicht ganz kompatible Treiber (eher unwahrscheinlich), Firewall (unwahrscheinlich, aber auch nicht gänzlich auszuschließen) ein.
 
Nach dem Rechnerstart - ohne Workbench - einfach einmal ausführen:
netstat -an | find "LISTENING"
Die Ports bleiben dieselben, genannt wird der Port 3306, welcher auch in der my.ini steht. Mit den mehreren Installationen wäre gut möglich, allerdings konnte ich keine weiteren mehr finden (wobei ich nicht in der registry gesucht habe). Ich habe eine weitere DB, welche im Netzwerk auf einem anderen PC installiert ist. Allerdings wird diese auch nur durch manuellen Klick verfügbar.

Noch ein Nachtrag: das ist eine voreilige Schlussfolgerung. Natürlich kann im MySQL-Log etwas stehen und auch der ganze Stacktrace wäre interessant gewesen, denn "could not create connection to database server" kann ja verschiedene Ursachen haben;
Ja, das war etwas schnell. Anbei der Stacktrace und die my.ini.
Wenn jemand eine Lösungsidee hat, wäre das klasse...

Anmerkung: Stacktrace war erst falsch beim Hochladen, weil Dienst nach Neustart plötzlich nicht mehr aktiv..
Fehler ist : com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
 

Anhänge

Zuletzt bearbeitet:
Das Problem ist gelöst. Ich muss mich entschuldigen für meine morgendliche Ungründlichkeit und bedanken für die schnelle Hilfe; das Lesen des Stacktraces brachte den Fehler hervor (hatte in einer Exception kein .printStackTrace() stehen)
und konnte durch Anfügen in der URL mit '&allowPublicKeyRetrieval=true' beim Verbindungsaufbau mit MySQL.jar gelöst werden. Weiß leider nicht mehr genau, seitwann das Problem bestand (und ob ausversehen die URL irgendwann wegen einer anderen Einstellung verändert wurde). Habe zuerst hier gefragt, weil ich schon häufiger Probleme mit der my.ini File und der Installation hatte.

Wieso der allowPublicKeyRetrieval-Fehler nur vor dem Öffnen der Connection erfolgt, weiß vll. jemand hier im Forum mit mehr Ahnung..
 
Zuletzt bearbeitet:
Wieso der allowPublicKeyRetrieval-Fehler nur vor dem Öffnen der Connection erfolgt, weiß vll. jemand hier im Forum mit mehr Ahnung
Der public key wird vermutlich an einer Stelle gecached, so dass nach dem Verbindungsaufbau der Workbench auch der Java JDBC Treiber das schon vorliegen hat.

(und ob ausversehen die URL irgendwann wegen einer anderen Einstellung verändert wurde).
Ich vermute, dass Einstellungen zur Verschlüsselung verändert worden sind.
Server Konfiguration mit Erläuterungen finden sich unter: MySQL :: MySQL 8.0 Reference Manual :: 6 Security
Und die J/Connector Seite: MySQL :: MySQL Connector/J 8.1 Developer Guide :: 6.3.5 Security

Wenn die public/private Key Verschlüsselung Pflicht ist, dann muss der public key bekannt sein. Diesen kann man auf der Clientseite angeben (serverRSAPublicKeyFile) oder man kann ihn herunter laden. Dafür gibt es das von Dir gesetzte allowPublicKeyRetrieval und der Default Wert ist hier false.

Wenn Dich das alles im Detail interessiert, dann kannst Du das alles nachlesen und die Einstellungen bei Dir vergleichen (Und auch damit herum spielen). Was ich auf StackOverflow oft finde, ist das sslMode😀isabled, das ich aber nie empfehlen würde, da dann die Verbindung nicht mehr verschlüsselt wird. Für Testumgebungen mag es aber prinzipiell ok sein.
 
ok danke für Info, Probleme gibt es hier immer wieder. Habe gerade mein useSSL aktiviert, welches vorhanden, aber nicht true war.
 

Neue Themen


Zurück
Oben