Datenbank- und Benutzerverwaltung
Seine tägliche Arbeit sollte man nicht als Benutzer root vornehmen. Dieses MySQL-Konto verfügt über weitreichende Berechtigungen und kann missbraucht werden. Häufig werden Datenbank-Zugriffe auch von PHP-Skripten verwendet. Diese können fehlerhaft sein und sollten daher nur in begrenztem Rahmen Schaden anrichten können. Aber auch eigene Anweisungen können ungewollt falsche Daten manipulieren. Daher ist es empfehlenswert, für jedes Projekt eine eigene Datenbank mit einem eigenen Benutzer anzulegen.
In diesem Artikel stelle ich grundlegende Anweisungen zur Verwaltung von Benutzern und Datenbanken vor. Die hier gezeigten Anweisungen erfordern die Rechte des Datenbank-Verwalters root.
Anlegen einer Datenbank
Um eine Datenbank anlegen zu können, muss man sich mit dem MySQL-Server verbinden. Standardmäßig verfügt nur der Datenbank-Benutzer root über das Recht zum Anlegen und Löschen von Datenbanken.
Im folgenden Screenshot wird die Datenbank mit dem Namen simon angelegt:
mysql> create database simon;
Query OK, 1 row affected (0.00 sec)
mysql>
Sollte eine Datenbank mit diesem namen bereits existieren, wird eine Fehlermeldung zurückgegeben:
mysql> create database simon;
ERROR 1007 (HY000): Can't create database 'simon'; database exists
mysql>
Das Auftreten eines Fehlers wird verhindert, wenn man die Anweisung wie folgt ausführt:
create database if not exists simon;
Verfügbare Datenbanken anzeigen
Ein Benutzer kann berechtigt sein, auf mehrere Datenbanken zuzugreifen. Im folgenden Screenshot werden alle Datenbanken ausgegeben, für die mindestens eine Berechtigung vorliegt:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| simon |
+--------------------+
3 rows in set (0.00 sec)
mysql>
Die Datenbank information_schema wird jedem MySQL-Benutzer angezeigt, obwohl man ihm keine expliziten Rechte dafür eingeräumt hat. Diese Datenbank soll hier nicht näher behandelt werden, da man wohl nie mit ihr in Berührung kommt. In der Datenbank mysql werden Einstellungen des Servers gespeichert. Diese Datenbank sollte man nie manuell editieren oder gar löschen, da man den MySQL-Server schnell unbrauchbar machen kann. Die Datenbank simon wurde weiter oben angelegt und deshalb mit ausgegeben.
MySQL-Benutzer anlegen
Mit der folgenden Anweisung wird der Datenbank-Benutzer simon angelegt. Er darf sich mit dem Host localhost verbinden und soll das Kennwort geheim verwenden. Standardmäßig verfügt der Benutzer nach der Einrichtung über keine Datenbank-Berechtigungen.
create user 'simon'@'localhost' identified by 'geheim';
Nun sollen ihm alle Rechte für die Datenbank simon gewährt werden, was mit folgender Anweisung geschieht:
grant all on simon.* to 'simon'@'localhost';
Jetzt ist der Benutzer zur Nutzung der Datenbank simon berechtigt und kann z. B. neue Tabellen anlegen und diese mit Daten füllen. Außerdem darf er seine Datenbank löschen.
Den neuen Benutzer könnte man alternativ auch mit folgender Anweisung in einem Schritt anlegen und ihm die Rechte für seine Datenbank gewähren:
grant all on simon.* to 'simon'@'localhost' identified by 'geheim';
Das MySQL-Berechtigungssystem kann aber nicht nur Rechte auf Datenbankebene gewähren, sondern auch auf globaler, Tabellen-, Spalten- und Routinen-Ebene. Weitere Informationen hierzu findest du in der MySQL-Dokumentation im Kapitel 13.5.1.3. GRANT und REVOKE. Hier erfährst du auch, wie du einem bestehenden Benutzer nachträglich Berechtigungen zuweisen oder entziehen kannst.
Kennwort ändern
Das Kennwort eines MySQL-Benutzers kann nachträglich geändert werden. Dies geschieht mit der SET PASSWORD Anweisung.
Im folgenden Beispiel ändert der Datenbank-Administrator das Kennwort des Benutzers simon. Es ist wichtig, dass der Host so angegeben wird, wie er beim Erstellen des Benutzers festgelegt wurde.
mysql> set password for 'simon'@'localhost' = password('secret');
Query OK, 0 rows affected (0.00 sec)
mysql>
Ist man mit dem MySQL-Server verbunden, kann man auch sein eigenes Kennwort ändern. Hier fällt der Aufruf etwas kürzer aus, da man seinen Benutzer- und Hostnamen nicht angeben braucht:
mysql> set password = password('geheim');
Query OK, 0 rows affected (0.15 sec)
mysql>
MySQL-Benutzer löschen
Den gerade angelegten Benutzer kannst du mit folgender Anweisung löschen:
drop user 'simon'@'localhost';
Löschen einer Datenbank
Selbstverständlich kann auch eine Datenbank wieder gelöscht werden. Beim Löschen werden auch alle Tabellen der Datenbank gelöscht. Daher ist diese Anweisung mit Vorsicht zu verwenden.
Das folgende Beispiel löscht die Datenbank simon:
drop database simon;
Jetzt kannst du neue Datenbanken und Datenbank-Benutzer anlegen und mit der eigentlichen Arbeit – dem Erstellen und Verwalten von Daten innerhalb einer Datenbank fortfahren.
Datum der Veröffentlichung: Donnerstag, 01.03.2007