MySQL Benutzerverwaltung
Nach der Installation ist der mysql- Server zwar lauffähig, weist aber Sicherheitslöcher auf.
Außerdem ist es auch für Testzwecke ganz praktisch, wenn man zumindest einen normalen user
einrichtet. Diese Howto soll dabei helfen.
Notation
- $ ist der Linux- oder Dosprompt
- Benutzereingaben sind fett dargestellt
- alle Befehle müssen mit einem return abgeschlossen werden
- Befehle im mysql-Monitor müssen mit einem Semikolon ";" und einem return abgeschlossen
werden
Allgemeines
Nach der Installation eines mysql- Servers sind (normalerweise) standardmäßig 2 user angelegt:
- der User root ohne Passwort
- ein User ohne Benutzernamen und Passwort
Man kann dies testen, indem man versucht den mysql- Monitor mit folgenden Kommandos aufzurufen:
$ mysql -u root
Wenn als Ergebnis
mysql>Welcome to the mysql- Monitor...
erscheint, existiert ein user mit dem Namen root ohne Passwort!!!! Dies ist natürlich ein extremes Sicherheitsloch und muß unbedingt geschlossen werden.
Als nächstes wollen wir noch testen, ob man sich ohne Benutzernamen und Passwort einloggen kann:
$ mysql
Führt auch dieses Kommando zum Erfolg, dann gibt es also einen user mit einem leeren Benutzernamer und leerem Passwort.
Diesen "leeren" User werden wir später löschen.
Aufbau der Benutzer- und Rechteverwaltung in mysql
Die Benutzer und deren Rechte werden hauptsächlich in den Tabellen user und db in der
Datenbank mysql verwaltet. Damit Änderungen in dieser Datenbank gültig werden, muß jede
Änderung mit Befehl: flush privileges in das System "gespült" werden.
root- Passwort ändern
Der user root soll das Passwort "caligula" erhalten. Wir loggen uns als root in der
mysql-Monitor ein und ändern das Passwort von root.
$ mysql -u root
mysql>Welcome to the mysql monitor ....
mysql>update mysql.user set password=password('caligula') where user='root';
mysql>Ouery OK, 0 row affected
mysql>flush privileges;
mysql>Ouery OK, 0 row affected
Beim nächsten einloggen als root müssen wird ein Passwort mit angeben. Damit der mysql-Monitor
weiß, daß ein Passwort eingegeben werden muß, erfolgt der Aufruf mit dem Parameter p.
$ mysql -u root -p
password:********
mysql>Welcome to the mysql monitor ....
Das erste Sicherheitloch ist jetzt geschlossen. Der User root (der alle Rechte besitzt)
braucht ein Passwort um sich einloggen zu können.
Einen neuen User anlegen und ihm einen Datenbank zuweisen
Der neue User soll "arnold" und seine Datenbank "muster_db" heißen. Als Passwort wählen wir
"terminator". Wir gehen davon aus, daß wir noch als root eingeloggt sind. Zuerst wechseln wir
in die Datenbank mysql und erzeugen anschließend den neuen user mit dem befehl grant.
Zum Schluß wird noch die Datenbank muster_dn mit dem Befehl create erzeugt.
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> grant all on muster_db.* to arnold@localhost identified by 'terminator';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
mysql> create database muster_db;
Query OK, 1 rows affected (0.02 sec)
Ergebnis: Der neu angelegte user hat in seiner Datenbank alle Rechte, in allen
anderen Datenbanken jedoch keine Rechte. Auch keine leserechte. Und das ist auch sinnvoll so!
"leeren" User löschen
Der letzte Schritt in unserem Minihowto ist das Löschen des leeren users. Dazu müssen wir
natürlich auch als root eingeloogt sein.
mysql> use mysql;
Reading table information for completion of table and column names You can turn off this feature
to get a quicker startup with -A
Database changed
mysql> delete from user where user="";
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
Ausblick
Die Benutzerverwaltung in mysql ist extrem flexibel und beliebig aufwendig. Falls Sie also noch
Herausforderungen suchen, empfehle ich Ihnen sich in dieses Thema einzuarbeiten.;-)
Viel Spass
Siegfried Jahnel::Software and more...
www.sj-sam.de