Von Matthias Jung auf Freitag, 26. Mai 2023
Kategorie: MySQL (PDO)

Kurz und gut - Episode #06 Nützliche Nutzerverwaltung: MySQL User Attribute

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

Eigentlich handelt es sich bei der heutigen Frage um kein echtes Problem. Einem Schulungsteilnehmer ist die Spalte „user_attributes“ in der Systemtabelle „mysql.user“ aufgefallen und er hat gefragt, wozu man diese in der Praxis nutzen kann. 

​Die Lösung

Die Spalte (übrigens von Datentyp „JSON“) kann verwendet werden, um Benutzerkonten näher zu kategorisieren und/oder zu beschreiben. So können weitere zusätzliche Informationen zu den Usern zentral gespeichert und natürlich auch genutzt werden.

In unserem kleinen Beispiel wollen wir zu den User-Accounts zwei zusätzliche Informationen hinterlegen:

  1. Abteilung in welcher der User arbeitet
  2. Bedeutung/Wichtigkeit des Users in der Organisation und der DB, um z. B. im Fall von Performance-Problemen bestimmte User-Accounts zu deaktivieren.

Natürlich können diese Daten auch gezielt ausgelesen werden: 

Nehmen wir mal den Fall an, dass wir die User einer bestimmten Abteilung (IT) für einige Zeit sperren wollen. Die möglichen Kommandos dafür wären die folgenden: 

Seit MySQL 8.0.22 gibt es zusätzlich im „information_schema“ eine Sicht „user_attributes“ mit den entsprechenden Informationen: 

Fazit

Die Spalte „user_attributes“ gibt es seit MySQL 8. Sie ist eine nützliche Erweiterung im Umfeld der Account-Verwaltung und bietet die Möglichkeit, Nutzer besser zu kategorisieren. Sicherlich gibt es da draußen viele Anwendungsfälle, wo diese JSON-Informationen nützlich sein können. Nutzen Sie bereits dieses Feature? Wenn ja, wofür? Schreiben Sie uns gerne, welches Problem Sie damit gelöst haben oder stellen Sie eine andere Frage, die wir hier diskutieren sollen. 

Seminarempfehlung

Kommentare hinterlassen