Am 19. Oktober 2020 wurde das MySQL Realase 8.0.22. veröffentlicht. Neben diversen Problembehebungen (Bug Fixes) haben es auch einige Neuerungen in das Relase geschaffft (vergl. https://mysqlrelease.com/2020/10/announcing-mysql-server-8-0-22-5-7-32-and-5-6-50/). Wir wollen uns an dieser Stelle mit der Funktion des "Read Only Schema" beschäftigen.
"ALTER", die Zeit für Veränderungen ist vorbei.
Bislang konnte man nur den gesamten Server (und damit alle Datenbanken) vor schreibenden Zugriffen schützen. Dazu konnte die globale Variable "read_only" auch zur Laufzeit (dynamisch) genutzt werden.Diese Einstellung wird beispielsweise gerne auf Replikaten (Slave-Datenbanken) genutzt, um die Replikation vor logischen Inkonsistenzen (durch schreibende Zugriffe) zu schützen. Mit dem aktuellen Release können nun auch Schreibrechte auf Schema-Ebene (Datenbank-Ebene) einfach beschränkt werden.
Dazu wurde das ALTER SCHEMA Statement um eine weitere Klausel ergänzt.
Immer schön den Überblick behalten
Ob und welche Schemata beschränkt sind, kann in den Metadaten (information_schema) eingesehen werden. Das folgende SELECT liefert eine Übersicht über die vorhandenen SCHEMATA inklusive ggfs. bestehender Einschränkungen:
Fazit: Vertrauen ist gut, Kontrolle ist besser
Ein kleines aber sehr nützliches Feature, was in einigen Betriebsfällen für mehr Sicherheit und/oder Betriebsstabilität führen kann. Besonders erfreulich ist die Tatsache, dass der Schutz der Schemata für alle User (auch mit dem SUPER-Privileg; z.B.: 'root'@'localhost') gilt. Bei der globalen Einstellung "read_only=1" sind exakt diese User von dieser Einschränkung ausgenommen. Und Manchmal sind es exakt diese Accounts, die den größten Schaden verursachen ;-)
Sie haben Fragen rund um den Betrieb von MySQL? Sprechen Sie mit uns oder besuchen Sie unseren Kurs.
¹ Fjodor Michailowitsch Dostojewski (1821 - 1881)