» SelfLinux » Anwendungs-Software » Datenbanken » MySQL - Datenbanken » Abschnitt 6 SelfLinux-0.10.0
zurück   Startseite Kapitelanfang Inhaltsverzeichnis GFDL   weiter

SelfLinux-Logo
Dokument MySQL - Datenbanken - Abschnitt 6 Revision: 1.1.2.11
Autor:  Alexander Fischer
Formatierung:  Torsten Hemm
Lizenz:  GFDL
 

8 Allgemeine Administration

In diesem Kapitel erfahren Sie die wichtigsten Aufgaben eines Administrators. Ich zeige Ihnen die wichtigsten Werkzeuge und erläutere die ersten Schritte bei der Erstellung einer kleinen Datenbank. Sie erfahren weiterhin die nötigen Grundlagen und die Reihenfolge der notwendigen Arbeitsschritte. Sie können sich mit dem System erst einmal vertraut machen, obwohl Sie den wichtigsten Schritt vornehmen: Die Absicherung des Datenbank-Management-System. Dieser Abschnitt ist wichtig, damit ihr Datenbanksystem vor unberechtigten Zugriff geschützt ist. Gerade bei Verwendung im Netzwerk (oder im WWW) ist wichtig, dass Sie Ihr System absichern.


8.1 Aufgaben eines Administrators

Der Begriff Administrator hört sich immens wichtig an, aber anders als bei vielen anderen Begriffen, trifft das in diesem speziellen Fall sogar zu. Sie sind wie bei Linux selbst der Allmächtige! Diese folgenden Aufgaben kommen dabei auf Sie zu:

  • Installation und Updates
  • Systemkonfiguration
  • Verwaltung von Benutzer- und Zugriffsrechten
  • Pflege und Wartung des Systems
  • Fehlerlokalisierung und Fehlerbehebung
  • Durchführen von Datensicherungen

Für diese Aufgaben ist alleine der Administrator zuständig und nur er alleine hat den vollständigen Zugriff auf das System. Das heißt, dass Sie mit dem Privileg an keinerlei Beschränkungen gebunden sind und eine große Verantwortung haben. Aus diesem Grunde sollten Sie mit den administrativen Rechten nur arbeiten, wenn es wirklich nicht mehr anders geht.

Unter Linux/Unix ist der Benutzer "root" ein alter Bekannter. root ist der Superuser, also gewissermaßen der Obermotz des gesamten Systems und genau einen solchen finden Sie auch bei MySQL. Dieser Kerl existiert bereits, nachdem sie MySQL auf die Platte gezwängt haben, und Mutter Datenbank fackelt da nicht lange mit der Aufgabenverteilung. Somit kann er kurz nach seiner Geburt schon die folgenden Arbeiten verrichten:

  • Erstellen und Verwalten von Benutzerkonten sowie Passwortvergabe
  • Anlage von neuen Datenbanken
  • Löschen von vorhandenen Datenbanken
  • Allgemeine Kontrollfunktionen

Zu diesem Zweck stellt Ihnen MySQL ein Tool Namens "mysqladmin" zur Verfügung. Die meisten der vorher aufgeführten Aufgaben verrichten Sie mit diesem Programm. Der Start Ihrer Karriere als MySQL-Administrator beginnt mit der Absicherung Ihres Systems.



8.2 Absichern des Systems

Nach der Neuinstallation ist Ihr MySQL-System offen wie das Brandenburger-Tor. Wenn Sie nun mit einem Netzwerk verbunden sind, und auf Ihr Netzwerk auch von außerhalb zugegriffen werden kann (Remote-Technik), dann haben Sie einen kritischen Punkt. Theoretisch könnte Ihnen ein Fremder alle administrative Rechte nehmen und Ihr System lahm legen. Sie haben vorher schon einen Blick in die vorhandenen Tabellen geworfen, diese Sie mit dem Benutzerkonto "root" OHNE Passwort aufrufen konnten. Sämtliche Zugriffsrechte und Benutzerkonten werden in MySQL in Form einer dafür angelegten Datenbank verwaltet. In diesen Tabellen stehen die Benutzernamen, die Passwörter und die zugeteilten Rechte an den vorhandenen Datenbanken und Tabellen. Schreib- und Leserechte werden mit so genannten "Flags" erteilt.

MySQL verwaltet die Benutzerkonten sowie die Rechtevergabe in einer Datenbank mit dem sinnigen Namen mysql. In dieser Datenbank finden Sie die folgenden Tabellen:

columns_priv In und mit der Tabelle vergeben Sie Zugriffsbeschränkungen auf einzelne Tabellenspalten und die darauf anwendbaren Befehle
db In dieser Tabelle werdenZugriffsrechte für die gesamte Datenbank gespeichert. Dort wird gespeichert, welcher Benutzer auf welche Datenbank Zugriff hat und welche weiteren Rechte er darauf hat.
host Hier besteht die Möglichkeit einzelnen Rechnern, also den Hosts, den Zugriff auf MySQL zu beschränken/verbieten.
user Hier werden die Benutzer mitsamt ihren Passwörtern eingetragen

Mit dem Befehl mysqlshow bekommen Sie eine Liste aller verfügbaren Datenbanken:

user@linux ~$ mysqlshow -u root -h localhost
+-----------+
| Databases |
+-----------+
| mysql     |
| test      |
+-----------+
user@linux ~$

Wenn Sie nun die Tabelle user aus der Datenbank mysql auf dem Bildschirm ausgeben lassen würden, dann hätten Sie folgende Einträge:

+-----------+--------+------------------+
| Host      | User   | Password         |
+-----------+--------+------------------+
| localhost | root   |                  |
| %         |        |                  |
| localhost |        |                  |
| %         | root   |                  |
| localhost | tbanus | 68d4f47c49a579c9 |
+-----------+--------+------------------+

Kurz zur Erklärung: Mit Localhost ist der Rechner gemeint, auf dem auch der MySQL-Server installiert wurde. Wahrscheinlich der, vor dem Sie sitzen. Das %-Zeichen ist ein Platzhalter für beliebige andere Rechner

In der Spalte User finden Sie zwei Benutzernamen den root und eventuell finden Sie wo der Benutzer tbanus steht Ihren Vornamen. Dies Bedeutet, dass es auf dem System einen Benutzer mit dem Namen tbanus gibt. Da der Benutzer nicht mit einem Prozentzeichen aufgelistet wird, kann dieser MySQL nicht von einem anderen Rechner aus bedienen.

Die vier Zeilen, die den Administrator root betreffen, ergeben alle Kombinationen, die notwendig sind, damit Sie sich als root immer auch ohne Passwort von jedem System aus zugreifen können. Das ist äußerst brisant und wird nun schnellstens abgestellt.

Als ersten Schritt vergeben Sie dem root ein Passwort. Danach löschen Sie alle Datensätze, in denen Prozentzeichen oder leere Datenfelder vorkommen. Erst dann ist Ihr System abgesichert.

Sie müssen sich nun ein sicheres Kennwort überlegen. Verwenden Sie dabei bitte nicht Ihr Kennwort von root bei Linux oder eines der anderen Benutzerkennwörter. Die folgende Befehlszeile geben Sie in Ihrer Console ein, wobei Sie das Wort "rootpasswort" durch Ihr Passwort ersetzen

user@linux ~$ mysqladmin -u root -h localhost password "rootpasswort"

Wenn nach der Bestätigung des Befehls nix passiert, dann hat es geklappt. Wenn Sie nun als root auf eine Funktion zugreifen wollen und nicht Ihr Passwort mit angeben mysql -u root geschieht folgendes:

ERROR 1045: Access denied for user: ...

Verwenden Sie stattdessen mysql -u root -p, werden Sie nach Ihrem Passwort gefragt. Nachdem Sie es eingegeben haben stehen Sie wieder im Clienten.

Genau dort müssen Sie nun für folgende Schritte der Systemabsicherung auch hin. Nun befolgen Sie bitte die folgenden Anweisungen:

Um die Datenbank MYSQL zu aktivieren, geben Sie den SQL-Befehl USE mysql; ein. Anschließend verwenden Sie den Befehl SELECT Host, User, Password FROM user; und erhalten eine Liste von Datensätzen, die ähnlich der vorherigen Tabelle aussehen sollte, nur das bei dem Benutzer root nun auch eine Passwort-Kodierung aufgeführt ist.

Mit dem folgenden Befehl löschen Sie nun alle Datensätze, die zu einem Teil leer sind oder ein Prozentzeichen besitzen
DELETE FROM user WHERE Host="%";
DELETE FROM user WHERE User="";

Das Ergebnis können Sie sich mit einem erneuten Aufruf von dem SELECT Befehl anschauen. Zu guter Letzt verlassen Sie den Client und starten den MySQL-Server neu, damit die Änderungen übernommen werden.

user@linux ~$ mysqladmin -u root -h localhost -p reload

Dadurch wird das System neu initialisiert und ist ab sofort vor anonymen Zugriff geschützt. Es können sich nun nur noch die Benutzer root und in meinem Beispiel der Benutzer tbanus einloggen und damit arbeiten, weil diese alleine Eingetragen sind.

Das folgende Listing zeigt Ihnen noch einmal alle Schritte der Reihe nach, so dass Sie das Beispiel komplett nachvollziehen können:

user@linux ~$ mysqladmin -u root -h localhost password "rootpasswort"
user@linux ~$ mysql -u root -h localhost -p
Enter password: *******
Welcome to the MySQL monitor. Commands end with ; or \g
Your MySQL connection id is 12 to server version 4.0.0
Type 'help;' or '\h' for help. Type '\c' to clear the buffer

mysql> USE mysql;
Database changed
mysql> SELECT Host, User, Password FROM user;
+-----------+--------+------------------+
| Host      | User   | Password         |
+-----------+--------+------------------+
| localhost | root   | 111e97222dab1dd7 |
| %         |        |                  |
| localhost |        |                  |
| %         | root   |                  |
| localhost | tbanus | 68d4f47c49a579c9 |
+-----------+--------+------------------+
5 rows in set (0.03 sec)

mysql> DELETE FROM user WHERE Host="%";
Query OK, 2 rows affected (0,57 sec)

mysql> DELETE FROM user WHERE User="";
Query OK, 1 row affected (0,36 sec)

mysql> SELECT Host, User, Password FROM user;
+----------+---------+------------------+
|Host      | User    | Password         |
+----------+---------+------------------+
|localhost | root    | 111e97222dab1dd7 |
|localhost | michael | 68d4f47c49a579c9 |
+----------+---------+------------------+
2 rows in set (0.01 sec)

mysql> quit
Bye
user@linux ~$ mysqladmin -u root -h localhost -p reload
Enter password: *******
user@linux ~$



zurück   Seitenanfang Startseite Kapitelanfang Inhaltsverzeichnis GFDL   weiter