Dokumentation

MySQL: Unterschied zwischen den Versionen

 
(36 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
Beachten Sie auch den Artikel [[Bauteildatenbank]]
Beachten Sie auch den Artikel [[Bauteildatenbank]]


== MySQL: Die schnelle Datenbank bei mehreren Arbeitsplätzen ==
== MySQL / MariaDB: 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.<br><br><big>''Hinweis:Bitte MySQL ab Version 5.1.12 bid 5.7 nutzen.''</big><br><br>
Die mit TARGET vorinstallierte SQLite-Bauteiledatenbank 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''' oder in einer '''MariaDB'''. Im Einzelplatzbetrieb jedoch hat die SQLite-Datenbank unserer Erfahrung nach die Nase vorn.<br><br>


== MySQL herunterladen ==
== MySQL / MariaDB installieren ==


[http://dev.mysql.com/downloads/mysql/ http://dev.mysql.com/downloads/mysql/]
Die Installer finden Sie hier zum Downloaden: [https://dev.mysql.com/downloads/mysql MySQL] und [https://mariadb.org/download MariaDB]<br><br>Sie können die Installation der Datenbank auf einem PC oder auf einem Server ausführen.<br><br>
<br>Wir empfehlen eines der ZIP-Archive zu verwenden. Dieses muss auf Ihrem Server in ein geeignetes Verzeichnis entpackt werden.<br><br><br>


== MySQL-Server installieren ==
== MySQL- / MariaDB-Server einrichten / anpassen und TARGET-Datenbank einfügen ==


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.
* Erstellen Sie z.B. mit phpMyAdmin eine neue leere Datenbank "target3001db" (mit Kollation utf8mb3_general_ci) oder in der SQL-Konsole:
 
Ü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:
 
[http://www.google.de/#hl=de&q=tutorial+mysql+installation Google: MySQL Installation]
 
 
== MySQL-Server Einrichten/Anpassen und TARGET-Datenbank einfügen ==
 
Sie haben zwei Möglichkeiten:
* Verwendung einer Konsole (empfehlenswert)
* Verwendung einer Browser Applikation, z. B. phpMyAdmin (bedingt empfehlenswert, da Server bis zu 2 Std. beschäftigt sein kann)
 
 
'''Hinweis:''' Benutzernamen und Paßwort dürfen jeweils maximal 16 Zeichen haben.
 
 
=== Unter Verwendung einer Konsole ===
 
<br><br>'''Einrichten, anpassen'''<br>
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'''<br>
 
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:
 
[http://server.ibfriedrich.com/download/mysql/mysql_target3001db.zip 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.<br><br>
 
=== 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.
 
 
<big>''Vor MySQL 5.1.6 war für diese Anweisung das SUPER-Recht notwendig!''</big>
 
 
'''Die Datenbank target3001db etc.:'''
 
<span style="color: #00AA00;">-- User 1 anlegen mit notwendigen Rechten  *** ggf. target3001user1 und target3001user1_password ersetzen ***</span>
GRANT USAGE ON *.* TO '<span style="color: #FF0000;">target3001user1</span>'@'%' IDENTIFIED BY '<span style="color: #FF0000;">target3001user1_password</span>';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE ROUTINE,<br> ALTER ROUTINE, TRIGGER ON target3001db.* TO '<span style="color: #FF0000;">target3001user1</span>'@'%';
 
<span style="color: #00AA00;">-- User 2 anlegen mit notwendigen Rechten  *** ggf. target3001user2 und target3001user2_password ersetzen ***</span>
GRANT USAGE ON *.* TO '<span style="color: #FF0000;">target3001user2</span>'@'%' IDENTIFIED BY '<span style="color: #FF0000;">target3001user2_password</span>';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE ROUTINE,<br> ALTER ROUTINE, TRIGGER ON target3001db.* TO '<span style="color: #FF0000;">target3001user2</span>'@'%';
 
<span style="color: #00AA00;">-- Ggf. weitere User</span>
 
<span style="color: #00AA00;">-- Datenbank anlegen</span>
  CREATE DATABASE target3001db CHARACTER SET utf8 COLLATE utf8_general_ci;
  CREATE DATABASE target3001db CHARACTER SET utf8 COLLATE utf8_general_ci;
 
* Laden Sie die folgende SQL-Datei im ZIP herunter und importieren Sie sie in die neue leere Datenbank: '''[https://office.ibfriedrich.com/target3001db.zip target3001db.zip]''' (61 MB). Alle Tabellen, alle Funktionen und alle Trigger werden so automatisch angelegt.
  <span style="color: #00AA00;">-- Variablen ggf. ändern</span>
* Tragen Sie Benutzer und Rechte für die neue Datenbak ein. Benutzernamen und Passworte dürfen jeweils maximal 16 Zeichen haben. Folgende Rechte sind erforderlich: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE und TRIGGER.
  <span style="color: #00AA00;">-- Um eine globale Variable ändern zu können, benötigen Sie die Berechtigung SUPER.</span>
* In TARGET im Bauteile-Browser im Menü "Verbunden mit..." tragen Sie die Einstellungen für MySQL ein. Diese werden auch für MariaDB verwendet:
  SHOW VARIABLES LIKE 'thread_stack';
  TARGET mit MySQL-Datenbank starten <hier tragen Sie "Ja" ein>
  <span style="color: #00AA00;">-- wenn kleiner als 256K, dann:</span>
MySQL Server <Name oder IP Ihres MySQL-/MariaDB-Servers>
  SET GLOBAL thread_stack = 256K;
  MySQL User <Ihr Username für den MySQL-/MariaDB-Server>
  SHOW VARIABLES LIKE 'query_cache_size';
MySQL Password <Ihr entsprechendes Passwort>
  <span style="color: #00AA00;">-- wenn kleiner als 32M, dann:</span>
  MySQL SSH Key <falls SSH verwendet wird: SSH Key-File>
  SET GLOBAL query_cache_size = 32M;
  MySQL SSH Cert <falls SSH verwendet wird: Zertifikat-File>
  SHOW VARIABLES LIKE 'max_allowed_packet';
  MySQL SSH CA <falls SSH verwendet wird: Certificate-Authority-File>
  <span style="color: #00AA00;">-- wenn kleiner als 2M, dann:</span>
* Wenn Sie in der SQLite-Datenbank bereits eigene User-Bauteile angelegt hatten, können Sie den Menüpunkt "Verbunden mit... / Migration von SQLite nach MySQL.." einmalig ausführen und die SQLite Datenbank "target3001.db" auswählen. Der Abgleich kann einen Moment dauern. Später können noch weitere *.db Dateien im Menü "Import / Export" hinzu importiert werden.
  SET GLOBAL max_allowed_packet = 2M;
* Zur Sicherheit können Sie im Bauteile-Browser den Menüpunkt "Update" nochmal aufrufen.
 
 
 
'''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:
 
[[Image: dumpimport.png]]<br><br>
 
[http://server.ibfriedrich.com/download/mysql/mysql_target3001db_empty.zip Hier können Sie den Dump herunterladen.]<br><br>
 
'''TARGET 3001! Online DB Update:'''
[[Die TARGET 3001! Bauteildatenbank updaten |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!<br><br><br><br>


=== Besonderheit bei Windows-Servern ===
=== Besonderheit bei Windows-Servern ===
Zeile 130: Zeile 42:
<br><br>
<br><br>


== MySQL-Client in TARGET einrichten ==
== Geht auch MS-SQL statt MySQL oder MariaDB? ==
 
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:<br><br>
 
[[image:mysql1_d.jpg|none]]<br>(Bild 1: Bauteil-Browser, Migration)
<br>
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)
<br><br>
 
== 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.
MS-SQL funktioniert leider nicht.<br><br>


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.
== Hilfe, MySQL wirft Fehlermeldungen! ==


Jetzt können alle Teilnehmer auf die MySQL-Datenbank zugreifen.<br><br>
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.<br><br>


[[en:MySQL]][[fr:MySQL]]
[[en:MySQL]][[fr:MySQL]]

Aktuelle Version vom 22. Januar 2025, 15:55 Uhr

SQLiteMySQL
SQLiteMySQL


Beachten Sie auch den Artikel Bauteildatenbank

MySQL / MariaDB: Die schnelle Datenbank bei mehreren Arbeitsplätzen

Die mit TARGET vorinstallierte SQLite-Bauteiledatenbank 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 oder in einer MariaDB. Im Einzelplatzbetrieb jedoch hat die SQLite-Datenbank unserer Erfahrung nach die Nase vorn.

MySQL / MariaDB installieren

Die Installer finden Sie hier zum Downloaden: MySQL und MariaDB

Sie können die Installation der Datenbank auf einem PC oder auf einem Server ausführen.

MySQL- / MariaDB-Server einrichten / anpassen und TARGET-Datenbank einfügen

  • Erstellen Sie z.B. mit phpMyAdmin eine neue leere Datenbank "target3001db" (mit Kollation utf8mb3_general_ci) oder in der SQL-Konsole:
CREATE DATABASE target3001db CHARACTER SET utf8 COLLATE utf8_general_ci;
  • Laden Sie die folgende SQL-Datei im ZIP herunter und importieren Sie sie in die neue leere Datenbank: target3001db.zip (61 MB). Alle Tabellen, alle Funktionen und alle Trigger werden so automatisch angelegt.
  • Tragen Sie Benutzer und Rechte für die neue Datenbak ein. Benutzernamen und Passworte dürfen jeweils maximal 16 Zeichen haben. Folgende Rechte sind erforderlich: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE und TRIGGER.
  • In TARGET im Bauteile-Browser im Menü "Verbunden mit..." tragen Sie die Einstellungen für MySQL ein. Diese werden auch für MariaDB verwendet:
TARGET mit MySQL-Datenbank starten <hier tragen Sie "Ja" ein>
MySQL Server <Name oder IP Ihres MySQL-/MariaDB-Servers>
MySQL User <Ihr Username für den MySQL-/MariaDB-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>
  • Wenn Sie in der SQLite-Datenbank bereits eigene User-Bauteile angelegt hatten, können Sie den Menüpunkt "Verbunden mit... / Migration von SQLite nach MySQL.." einmalig ausführen und die SQLite Datenbank "target3001.db" auswählen. Der Abgleich kann einen Moment dauern. Später können noch weitere *.db Dateien im Menü "Import / Export" hinzu importiert werden.
  • Zur Sicherheit können Sie im Bauteile-Browser den Menüpunkt "Update" nochmal aufrufen.

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.

Geht auch MS-SQL statt MySQL oder MariaDB?

MS-SQL funktioniert leider nicht.

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.