Skip to content
You are here: Home » Unsere Angebote für berufliche Schulen » Arbeitsgruppen » Online-Dienste » Online-News » Ausgabe 13 » Benutzer- und Rechteverwaltung Landeswappen

Benutzer- und Rechteverwaltung bei MySQL-Datenbanken

Jürgen Rieber, Hugo-Eckener-Schule Friedrichshafen

Dieser Artikel beschreibt auf welche Weise der SQL-Server MySQL, installiert auf einem NT-Applikationsserver, als Datenbank für einen Online Web Shop praxisgerecht eingerichtet wird. Besonderer Augenmerk wird auf die Benutzerverwaltung und das Rechtesystem von MySQL gelegt.

Um alle Feinheiten der Benutzerverwaltung / Rechteverwaltung auszuloten, muss auf das HTML Online Handbuch von MySQL zurückgegriffen werden, bzw. die von Andreas Grupp geschriebene deutsche Übersetzung des Kapitel 6 zu Rate gezogen werden. Beide Quellen beziehen sich auf eine MySQL Installation auf Linux Systemen. Alle MySQL-Anweisungen gelten auch unter Windows NT.

Das MySQL Benutzer / Rechtesystem arbeitet völlig unabhängig von einer eventuell auf dem Betriebssystem des Servers angelegten Benutzer- / Rechtestruktur. Das hat für uns den Vorteil, dass auf dem NT Applikationsserver im Novellnetz keine Benutzer eingerichtet werden müssen bzw. auf dieser Basis Rechte vergeben werden müssen.

Überblick über die Rechtestruktur

  • Grundsätzlich versteht MySQL die Kombination aus einem Host (IP-Adresse), von dem auf die Datenbank zugegriffen wird, und einem User als eindeutiger Identität.
  • Alle Rechte werden in den 3 Tabellen user, host, db im Verzeichnis c:\mysql\data\mysql gespeichert.
  • Jedes in der user-Tabelle erteilte Recht ist für alle Datenbanken gütig, die in der db-Tabelle nicht gefunden werden können.
  • Auf der Datenbankebene (db Tabelle) können Rechte für die Datenbank und einzelne User vergeben werden.

Ermittlung der effektiven Rechte eines Users

Eine Wiederholung muss nicht sein. Deshalb verweise ich auf Andreas Grupp, Kapitel 6.2 (deutsche Übersetzung).

Details:

  • User Tabelle: Sie beinhaltet alle host+user Kombinationen die das Recht haben sich an den mysql-Server anzumelden, und enthält gegebenenfalls noch deren Password.
  • db Tabelle: Legt fest, welche Datenbanken ein host+user benutzen kann und was er mit den Tabellen in jeder Datenbank machen kann.
  • Host Tabelle: Wird nur in großen Netzwerken benutzt.
Umsetzung für einen Einsatz im Unterricht

Bei der Installation von MySQL werden ein User (Superuser) namens root sowie eine leere Datenbank namens test ( C:\mysql\data\test ) angelegt. Der User root hat die Möglichkeit von allen Hosts des Netzes die Datenbank test (und alle weiteren neu angelegten Datenbanken) mit allen Möglichkeiten (alle Rechte) zu bearbeiten. So sind die Einfallstore für jeden Kundigen weit offen. Zur Absicherung sollte der Superbenutzer root mit einem Passwort versehen werden:
Der MySQL Datenbank-Server muss gestartet sein

(winmysqladmin.exe als Dienst: grüne Ampel.

Mit mysql.exe in C:\mysql\bin\ startet die zeichenorientierte SQL Konsole (MySQL Frontend). Mit der bekannten SQL Anweisung use

(use mysql) wird die Rechtedatenbank geöffnet. Alle weiteren Anweisungen sind im Bild sichtbar. Das Passwort darf nicht in MS-Access via ODBC vergeben werden, da es verschlüsselt wird.

Alle Änderungen, die in der Rechtedatenbank gemacht werden, sind u.U. nicht sofort registriert. Mit der FLUSH PRIVILEGES; Anweisung wird erreicht, dass der MySQL Server die Rechtedatenbank neu lädt.
 

Szenario 1:

Alle Schüler arbeiten an der gleichen Web-Shop Datenbank:

Dazu werden eine leere Datenbank z.B. namens shop

( C:\mysql\data\shop ) sowie ein Benutzer namens troubadix (PW:barde) angelegt, der alle Rechte für diese Datenbank besitzt.

Szenario 2:

Jeder Schüler des Kurses arbeitet an seiner eigenen Web-Shop-Datenbank . Allerdings existiert nur 1 User z.B. troubadix (PW:barde), der alle Rechte besitzt.

Beispiel: Rechte für 2 Datenbanken ShopJoerg und MichaelsShop werden vergeben:

Verzeichnisstruktur

Notwendige Eingaben im MySQL Frontend :

Dadurch erreichte Feldbelegungen in der user-Tabelle:

Szenario 3:

Jeder Schüler des Kurses arbeitet an seiner eigenen Web-Shop Datenbank . Zu jeder Datenbank existiert ein Benutzer mit Vollzugriff auf diese Datenbank.

Beispiel: Rechte für 2 Datenbanken ShopJoerg mit Benutzer Joerg (PW: Heike)und MichaelsShop mit Benutzer Michael (PW: Clara) werden vergeben:

Notwendige Eingaben im MySQL Frontend :

Dadurch erreichte Feldbelegungen in der db-Tabelle:

Szenario 4:

Wie Szenario 3 mit der kleinen Einschränkung, dass die verschiedenen Web-Shop Datenbanken einheitlich mit z.B. Shop.... beginnen. Hier genügt ein Eintrag mit Wildcard % in der db-Tabelle. Somit spart man sich Konfigurationsarbeit.

Notwendige Eingaben im MySQL Frontend :

Dadurch erreichte Feldbelegungen in der db-Tabelle und der user-Tabelle:

Szenario 5:

Einfacher und bequemer lassen sich Benutzer ohne Passwort (verschlüsselte PW) und die zugehörenden Rechte natürlich über MS-Access als Frontend für eine MySQL Datenbank administrieren. Dazu ist die Installation des passenden ODBC MySQL Treibers nötig. Mehr dazu im Artikel Access als Frontend für eine MySQL Datenbank.
 

Natürlich sind noch weitere Verfeinerungen und Kombinationen denkbar.

Für einen Überblick sowie eine Ausleuchtung des Umfeldes hat mir die Darstellung von Guido Stepken ( stepken@little-idiot.de) , der ein MySQL Datenbankhandbuch mit Beispielen in Deutsch geschrieben hat, sehr gefallen : http://www2.little-idiot.de/mysql/.