Java-Zugriff auf MySQL-Datenbank

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

landogardiner

Benutzer
Registriert
06. Juni 2012
Beiträge
41
Reaktionspunkte
0
Punkte
6
Hallo,
ich würde gerne aus dem lokalen Netz auf eine MariaDB MySQL-Datenbank zugreifen.

Hat jemand einen Tipp, wie ich eine Verbindung von Java (dbHost??, dbPort) herstellen kann?

Gruß
Frajo
 
Da ist nichts besonderes. Das geht wie üblich mit dem Standard-MySQL JDBC-Treiber. dbHost ist die IP der Syno, dbPort ist auch Standard 3306. Google hat Unmengen Beispiele. Falls die Firewall aktiviert ist, muss der Port auf der Syno eingehend freigeschaltet werden.
 
Das Problem ist gelöst, hat mir aber einiges an Kopfzerbrechen bereitet:

Ich benutze eine Klasse DatabaseConnector, die die Verbindung zur Datenbank aufbaut. Neben dbhost und dbport muss ich noch den Benutzernamen und Passwort zum Zugriff auf die Datenbank angeben.
Der Benutzer benutzer1 ist bei phpMyAdmin angelegt, aber als Localhost. Das funktioniert dann bei einem Telnet-Zugriff auf die Synology wunderbar, weil der Benutzername durch @localhost ergänzt wird. Beim Zugriff von meinem Mac aus aber wird natürlich der Benutzername durch @my_Mac ergänzt und erhält keinen Zugriff.

Also habe ich bei phpMyAdmin einen neuen Benutzer benutzer2 angelegt, der von jedem Host aus ('%') Zugriff hat.
Dieser Benutzer ist sonst mit allen Rechten identisch zu dem zuerst angelegten, hat also Grant-Zugriff auf die Datenbank.

Hier funktioniert bereits die telnet-Anmeldung nicht: Dem benutzer2 wird bei telnet wieder @localhost angehängt, aber der Zugriff verweigert.

Das fand ich jetzt sehr verwirrend.

Spaßeshalber habe ich dann mal den Zugriff über mein Java-Programm probiert und siehe da: Es hat funktioniert!

Was muss ich mir merken? Der Benutzer benutzerl1@% erhält zwar von extern Zugriff, aber der Zugriff über localhost wird verweigert. Das verstehe ich zwar nicht, aber nun funktioniert der Java-Zugriff zumindest.
 
Der Mysql User für die Anmeldung an der Mysql-DB und der Synology User für die Anmeldung am Betriebssystem(telnet) sind sind völlig verschiedene und unabhängige Bereiche. Wenn man ein "grant all PRIVILEGES ON *.* to 'benutzer2'@'%'; " gefolgt von "flush privileges;" eingibt, sollte die Anmeldung mit "mysql -u benutzer2 -h <syno-ip> -w" möglich sein, wenn nicht ein andererer Eintrag dem entgegensteht.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat