Wie man sich schon denken kann, gibt es bei den MySQL-Datenbanken ein Rechtesystem. Damit kann geregelt werden, dass nicht jeder alle Daten sehen bzw. ändern oder löschen darf. Das Zugriffssystem von MySQL ist in zwei Stufen unterteilt. Die erste Zugriffsstufe prüft, ob ein Benutzer überhaupt mit MySQL kommunizieren darf. In der zweiten Zugriffsstufe wird geregelt, welche Befehle ein Benutzer bei welcher Datenbank, Tabelle und Spalte ausführen darf.
MySQL wertet beim Log-in eines Benutzers drei Informationen aus: den Benutzernamen, das Passwort und den Hostnamen (Rechnername). Bei einer Benutzeranmeldung werden diese drei Informationen mit den in der MySQL-Datenbank gespeicherten Logindaten verglichen. Wenn sie übereinstimmen, kann der Benutzer die für ihn freigegebenen Datenbanken sehen und bearbeiten.
Die MySQL-Zugriffsrechte lassen sich mit einigen Befehlen steuern. Wer es komfortabler mag, kann auch Programme mit grafischer Oberfläche oder Webinterface nutzen. Um das Rechtesystem von MySQL jedoch erst einmal zu verstehen, ist es meiner Meinung nach gut, wenn man sich die Befehle einmal genauer anschaut. Daher habe ich hier eine kleine Befehlsübersicht zum Erstellen, Löschen und Verwalten der Benutzerrechte erstellt:
| CREATE USER test@localhost IDENTIYFIED BY ‚pass‘ | Mit diesem Befehl wird ein User mit dem Benutzernamen “test” und dem Passwort “pass” angelegt. |
| SHOW GRANTS FOR test@localhost | Zeigt die Berechtigungen des Benutzers “test” an, wenn ihr davor den oben stehenden Befehl eingegeben habt, darf der User “test” sich nur einloggen, aber hat keine weiteren Rechte. |
| DROP USER test@localhost | Löscht den User “test”. |
| GRANT ALL ON *.* TO test@localhost | Gibt dem Benutzer “test” globale Berechtigungen für alle Datenbanken auf dem Server. |
| GRANT ALL ON testdb.* TO test@localhost | Gibt dem Benutzer “test” alle Rechte für die Datenbank “testdb”. |
| GRANT SELECT ON testdb.Tab TO test@localhost | Gibt dem Benutzer “test” das Leserecht für die Tabelle “Tab” in der Datenbank “testdb”. |
| GRANT SELECT, UPDATE, INSERT, DELETE ON testdb.Tab TO test@localhost | Gibt dem Benutzer “test” die Rechte, die Tabelle “Tab” in der Datenbank “testdb” zu ändern und zu löschen |
| REVOKE SELECT ON testdb.Tab FROM test@localhost | Entfernt die Select-Berechtigung bei dem User “test” von der Tabelle “Tab” bei der Datenbank “testdb”. |
Das ist mal ein kleiner Auszug, wie man bei MySQL Benutzer anlegen, diesen verschiedene Berechtigungen geben und sie wieder löschen kann, wenn sie nicht mehr benötigt werden.