Von Matthias Jung auf Dienstag, 09. Januar 2024
Kategorie: Data Management

Kurz und gut – Episode #15 Schön mal wieder „offline“ zu sein …

Ich werde in Seminaren, Workshops oder in Kundenprojekten in Sachen MySQL immer mal wieder mit Dingen konfrontiert, auf die ich ad hoc keine Antwort habe bzw. mit denen ich noch keine Erfahrung gesammelt habe. 

Das Problem

Im Leben eines DBAs gibt es immer wieder mal Situationen, wo er mit seinem Datenbank-Server allein sein möchte … zum Beispiel sollen Änderungen am Applikations-Schema vorgenommen werden, eine Tabelle partitioniert oder defragmentiert werden oder Daten ge- oder entladen werden. Seit der Version 5.7.5 steht uns dazu der Parameter „offline_mode“ zur Verfügung. 

Die Lösung

Die globale Variable „offline_mode“ hilft uns nicht, privilegierte User (z. B. den Applikationsaccount) von der Datenbank zu verbannen, um z. B. die oben erwähnten Wartungen vorzunehmen:

mysql> set global offline_mode=On;
Query OK, 0 rows affected (0.00 sec)

Für ein kleines Beispiel haben wir zwei User-Konten angelegt, die systemweite (also überall auf dem Server) Leserechte haben. Der zweite User („priv“) hat lediglich die zusätzliche Berechtigung „connection_admin“, die auch in anderen höherwertigen Rechten (eine Art Rechtesammlung für Administratoren) enthalten sein kann.

Wird der Server während der Verbindung in den „offline_mode“ versetzt, so gibt es beim nächsten Kommando den folgenden Fehlercode: 

​Für den untenstehenden User ergibt sich dieses Problem nicht. Er kann trotzdem normal weiterarbeiten:

Fazit

Kein großes Hexenwerk. Der Parameter tut genau das, was er soll. Wie immer gilt, dass man mit den Rechten umsichtig umgehen sollte (Principle of least privilege). Vergibt man zu großzügig Privilegien (gerade Sammelprivilegien wie „Super“m „Connection_Admin“), so kann einem dies an solchen Stellen, wie in diesem Falle, die Arbeit deutlich erschweren.

Sie haben Fragen rund um den Betrieb von MySQL? Sprechen Sie mit uns! 

Seminarempfehlung

Kommentare hinterlassen