Von ORDIX AG auf Mittwoch, 29. Juli 2020
Kategorie: Data Management

MySQL unter Windows – Teil 2: Administration & Besonderheiten

Windows – eine Sonderlocke?

Ein MySQL-Server lässt sich unter Windows grundsätzlich auf die gleiche Art und Weise administrieren, wie es auch unter Unix/Linux der Fall ist. Dazu dient sowohl die Konfigurationsdatei des Servers (my.cnf) für statische Einstellungen, die beim Start gesetzt werden sollen, als auch die auto.cnf für persistente Änderungen zur Laufzeit des Servers.

Durch die auto.cnf kann wie im folgenden Beispiel gezeigt eine Änderung online durchgeführt werden, die auch bei einem Neustart des MySQL-Servers Bestand hat. Voraussetzung ist hierfür, dass die Variable PERSISTED_GLOBALS_LOAD aktiviert ist:

Standardmäßig liegt die auto.cnf im Data-Dir des Servers.

Rekonfiguration mittels GUi

Aus dem ersten Teil dieser Reihe ist bereits der MySQL-Installer bekannt, welcher im Rahmen der Installation der Software gewisse Konfigurationsmöglichkeiten anbietet. Auf diese Möglichkeit lässt sich auch nach der erstmaligen Installation zurückgreifen, indem wir auf „Reconfigure" in der entsprechenden Reihe des MySQL-Servers klicken:

Mit Hilfe der darauf folgenden Masken lässt sich die Konfiguration identisch zu den Installationsschritten anpassen. Dies ist z.B. sinnvoll, wenn zusätzliche administrative Benutzer angelegt werden sollen, ohne selbst genauere MySQL-Kenntnisse zu besitzen.

Named Pipe – auf jeden Fall eine Sonderlocke

Für einen MySQL-Server unter Windows lässt sich neben der üblichen TCP/IP-Verbindung auch eine sogenannte Named Pipe definieren. Diese Named Pipe übernimmt die Aufgabe des Sockets unter Unix/Linux. Ob eine Named Pipe verwendet wird, lässt sich über den Parameter named_pipe definieren:Wir setzen diesen Parameter durch die Bearbeitung der my.cnf auf ON und definieren gleichzeitig einen Namen durch das Setzen des socket-Parameters:Nach dem Neustart des MySQL-Servers sollten beide Parameter gesetzt sein und die Named Pipe kann verwendet werden:

Durch die Angabe der Named Pipe (--socket) und --protocol=pipe kann ich eine Verbindung über diese Named Pipe realisieren und gehe in diesem Moment nicht über das Netzwerk. Wie auch bei einer Socket-Verbindung unter Unix/Linux ist dies eine gute Alternative, wenn Applikation und Datenbank auf einem Server laufen. Außerdem ist der MySQL-Server zusätzlich vor Angriffen von außen geschützt, wenn man sich für die ausschließliche Nutzung von Named Pipes entscheidet.

lower_case_table_names – eine weitere Sonderlocke

Mit Hilfe des Parameters lower_case_table_names lassen sich Tabellen in MySQL case-sensitiv erstellen.

Dieser Parameter kann auf 0, 1 oder 2 gesetzt werden, wobei 0 die Einstellungen des Betriebssystems verwendet, Lookups bei Indizes o.ä. aber stets case-sensitiv ausgeführt werden. Auf Betriebssystemen mit einem case-insensitiven Filesystem wie Windows oder MacOS sollte dieser Parameter daher nicht auf 0 gesetzt werden.

Ein Setzen von lower_case_table_names auf 1 bewirkt, dass alle Tabellen auf dem Filesystem in lowercase erstellt werden, wohingegen ein Wert von 2 case-sensitiv speichert. In diesem Falle werden Lookups stets mit lowercase durchgeführt, weshalb es im Gegensatz zu einem Wert von 0 unter Windows nicht zu Problemen führt.

Ein Beispiel:

lower_case_table_names OS case-sensitiv Name beim Erstellen Name auf Festplatte
Lookup
​0 ​​Ja ​„TesT123" „TesT123"​„TesT123" vs. „TesT123"
​​0​Nein​​„TesT123"​​„test123"​„test123" vs. „TesT123"
​1​Ja​„TesT123"​​„test123"​„test123" vs. „test123"
​1​​Nein​„TesT123"​​„test123"​„test123" vs. „test123"
​2​Ja​„TesT123"​​„TesT123"​„test123" vs. „test123"
​2​​Nein​„TesT123"​​„TesT123"​„test123" vs. „test123"
Aus diesem Grund lautet unsere Empfehlung, einen MySQL-Server unter Windows mit einem lower_case_table_names​ = 2 zu betreiben, wenn die Applikationsseite case-sensitive Namen von Tabellen benötigt. Andernfalls geht man sämtlichen Schwierigkeiten aus dem Weg, wenn man auf case-sensitive Namen verzichtet und lower_case_table_names​ = 1 setzt.
Kommentare hinterlassen