Dokumentation

MySQL

SQLiteMySQL

Beachten Sie auch den Artikel Bauteildatenbank

MySQL: Die schnelle Datenbank bei mehreren Arbeitsplätzen

Die mit TARGET vorinstallierte SQLite-Datenbank wird bei üblichen Netzwerk-Übertragungsraten im Mehrbenutzerbetrieb langsam. Wer in einem Netzwerk mit mehreren Arbeitsplätzen auf eine gemeinsame TARGET 3001! Bauteile-Datenbank zugreifen möchte, der benötigt die Bauteile in einer MySQL-Datenbank. Im Einzelplatzbetrieb jedoch hat die SQLite-Datenbank unserer Erfahrung nach die Nase vorn.

Hinweis: Bitte MySQL ab Version 5.1.12 bis 5.7 nutzen. Die Verwendung von Tools wie "MySQL Workbench" kann zu Problemen führen.

MySQL herunterladen

https://dev.mysql.com/downloads/mysql/5.7.html
Wir empfehlen eines der ZIP-Archive zu verwenden. Dieses muss auf Ihrem Server in ein geeignetes Verzeichnis entpackt werden.


MySQL-Server installieren

Während die kleine Schwester (die SQLite-Datenbank) mit einer DLL und einer Datenbankdatei auskommt, benötigt die MySQL-Datenbank einen MySQL-Server. Dieser kann sich auf einem extra Computer im Netzwerk befinden oder behelfsweise auf einem der Arbeitsplatzrechner. Wichtig ist, dass der Server immer an ist, wenn jemand im Netzwerk mit TARGET arbeiten möchte.

Üblicherweise fragen Sie Ihren Systemadministrator, er möge einen MySQL-Server einrichten. Sowohl Linux-Rechner als auch Windows-Rechner eignen sich dazu, einen MySQL-Server einzurichten. Im Internet kursieren verschiedene Tutorials, um MySQL auf der Vielzahl der verschiedenen Systeme einzurichten:

Google: MySQL Installation


MySQL-Server Einrichten/Anpassen und TARGET-Datenbank einfügen

Sie haben zwei Möglichkeiten:


Hinweis: Benutzernamen und Paßwort dürfen jeweils maximal 16 Zeichen haben.


Unter Verwendung einer Konsole



Einrichten, anpassen
Damit TARGET korrekt auf die Datenbank zugreifen kann, sollten folgende Einstellungen vorgenommen werden.

Sie müssen die im MySQL-Verzeichnis befindliche "my-small.ini" kopieren und in "my.ini" umbenennen. Unter Linux heißt das entsprechende Konfigurationsfile "my.cnf" und unter Windows "my.ini". Hier müssen noch Einstellungen wie folgt vorgenommen werden:

[mysqld]
thread_stack = 256K
query_cache_size = 32M             #query_cache_size ist ab MySQL 5.7.20 deprecated, also hinfällig
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
max_allowed_packet=2M

[mysql]
max_allowed_packet=2M


Im "bin"-Verzeichnis von MySQL gibt es den MySQL-Server mysqld. mysqld ist der Server und mysql ist das Client-Programm.


TARGET-Datenbank einfügen

Um die TARGET-Bauteile-Datenbank im MySQL-Server einzufügen, benötigen Sie ein DUMP-File der Datenbank und ein kurzes Script-File, um die Daten einzulesen. Je nachdem, ob es sich beim Server um ein Linux- oder um ein Windows-System handelt, muss ein anderes Script gestartet werden. Hier finden Sie ein ZIP-File mit allen diesen Dingen zum Downloaden:

Dump und Scripte


Das entsprechende Skript file (Linux oder Windows) und das Dump file wird in das bin-Verzeichnis von MySQL verschoben.

Bei einer MySQL Erstinstallation gibt es den Super-User "root" ohne Passwort. Wenn Sie das Skript starten, werden Sie zur Eingabe des Root aufgefordert. Sie können auch einen anderen vorhandenen Super-User angeben.


Das jeweilige Script kann ggf. noch angepasst werden, je nachdem wie viele User Zugriff auf die MySQL-Bauteile haben sollen. Nach dem Einlesen der Bauteile, ist der MySQL-Server dann zunächst fertig aufgesetzt.

Unter Verwendung von phpMyAdmin etc.

Die MySQL-DB target3001db mit einer (Browser-)Applikation zur Administration von MySQL-Datenbanken, z.B. phpMyAdmin, einrichten: (der Dump-Import kann zwei Stunden dauern. So lange wird Ihr Server damit beschäftigt sein).

In Ihrer Applikation können Sie SQL-Anweisungen als Text eingeben oder über entsprechende Menüs und Dialoge durchführen. Zwecks Allgemeinheit geben wir hier die Anweisungen als Text an.


Vor MySQL 5.1.6 war für diese Anweisung das SUPER-Recht notwendig!


Die Datenbank target3001db etc.:

-- User 1 anlegen mit notwendigen Rechten  *** ggf. target3001user1 und target3001user1_password ersetzen ***
GRANT USAGE ON *.* TO 'target3001user1'@'%' IDENTIFIED BY 'target3001user1_password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE ROUTINE,
ALTER ROUTINE, TRIGGER ON target3001db.* TO 'target3001user1'@'%';
-- User 2 anlegen mit notwendigen Rechten  *** ggf. target3001user2 und target3001user2_password ersetzen ***
GRANT USAGE ON *.* TO 'target3001user2'@'%' IDENTIFIED BY 'target3001user2_password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE ROUTINE,
ALTER ROUTINE, TRIGGER ON target3001db.* TO 'target3001user2'@'%'; -- Ggf. weitere User
-- Datenbank anlegen
CREATE DATABASE target3001db CHARACTER SET utf8 COLLATE utf8_general_ci;
-- Variablen ggf. ändern
-- Um eine globale Variable ändern zu können, benötigen Sie die Berechtigung SUPER.
SHOW VARIABLES LIKE 'thread_stack';
 -- wenn kleiner als 256K, dann:
 SET GLOBAL thread_stack = 256K;
SHOW VARIABLES LIKE 'query_cache_size';
 -- wenn kleiner als 32M, dann:
 SET GLOBAL query_cache_size = 32M;
SHOW VARIABLES LIKE 'max_allowed_packet';
 -- wenn kleiner als 2M, dann:
 SET GLOBAL max_allowed_packet = 2M;


Jetzt wird der DB-Dump ohne Bauteile (empty3001db.sql) importiert:

Warum nicht gleich den ganzen Dump mit Bauteilen? Die DB hat über 60MB, aber der Dump-Import ist leider immer begrenzt (siehe Bild)! Beispiel phpMyAdmin:

Dumpimport.png

Hier können Sie den Dump herunterladen.

TARGET 3001! Online DB Update: Hiermit holen Sie alle Bauteile etc. von unserem Server. Der Download benötigt nur wenige Sekunden, aber der Import benötigt bis zu zwei Stunden. Ihr Server/Netzwerk wird entsprechend belastet!



Besonderheit bei Windows-Servern

Bei Windows-Servern erforderlich (mit der Konsole):

$ mysql -u root -p
oder ohne Passwort: $ mysql -u root
mysql> use mysql
mysql> GRANT ALL ON *.* to root@'%' IDENTIFIED BY '<your-mysql-root-password>';
mysql> FLUSH PRIVILEGES;

Diese Einstellung können Sie auch mit phpMyAdmin oder mit der Workbench durchführen.

MySQL-Client in TARGET einrichten

Neben dem TARGET-Programm findet sich die Datei "libmsql.dll". Diese stellt den Client-Treiber für die Verbindung zum MySQL-Server dar. In TARGET selbst müssen Sie einige wenige Eintragungen machen, damit der MySQL-Server angesprochen werden kann:

Öffnen Sie ein leeres Projekt und drücken Sie die Taste [F2], um den Bauteile-Browser zu öffnen. Hier am Ende des Menüs wird oben angezeigt, dass Sie noch mit der SQLite-Datenbank verbunden sind:

Mysql1 d.jpg

(Bild 1: Bauteil-Browser, Migration)


Jetzt klicken Sie auf diesen Menüeintrag "[ verbunden mit ... ]". Im aufklappenden Menü wählen Sie den Punkt "Einstellungen". Hier setzen Sie folgende Einträge:

TARGET mit MySQL-Datenbank starten (hier tragen Sie "Ja" ein)
MySQL Server (Name oder IP Ihres MySQL-Servers)
MySQL User (Ihr Username für den MySQL-Server)
MySQL Password (Ihr entsprechendes Passwort)
MySQL SSH Key (falls SSH verwendet wird: SSH Key-File)
MySQL SSH Cert (falls SSH verwendet wird: Zertifikat-File)
MySQL SSH CA (falls SSH verwendet wird: Certificate-Authority-File)


Mehrere Benutzer können den selben MySQL User-Namen verwenden.

Eigene Bauteile einfügen (Migration)

Hatten Sie bereits eigene USER-Bauteile in SQLite (target3001.db) erzeugt, können diese einmalig aus einer TARGET-Version in die blanke, von IBF vorgegebene Datenbank eingelesen werden. Dabei bleiben z.B. alle Bauteile-IDs und selbst angelegte Bauteiltypen etc. in der Datenbank identisch. Wir nennen diesen Vorgang "Migration". Dazu suchen Sie von den ggf. mehreren Rechner die wichtigste SQLite-Datenbank aus. Alle weiteren Bauteile von anderen Nutzern können Sie später hinzu importieren.

Für die Migration wechseln Sie zuerst mit dem Menüpunkt "[ verbunden mit ... ]" zur MySQL-Datenbank. Dann wählen Sie in diesem Menü "Migration von SQLite nach MySQL". Geben Sie dann Ihre wichtigste SQLite-Datenbank target3001.db an, die in MySQL eingefüllt werden soll. Am einfachsten funktioniert die Migration also auf dem Rechner mit dieser wichtigsten SQLite-Datenbank.

Jetzt können alle Teilnehmer auf die MySQL-Datenbank zugreifen.

Geht auch MariaDB statt MySQL?

Hier gibt es dazu einen Tipp von einem Kunden.

Hilfe, MySQL wirft Fehlermeldungen!

Wenn TARGET sich nicht mehr mit der Datenbank verbinden kann oder sonstige Fehlermeldungen wirft, kann das an gelöschten Benutzern liegen. Diese User ggf. wieder neu in der MySQL-Datenbank anlegen.