Wer sich schon die Mühe macht, seine Homepage mit Daten zu beschicken, damit andere schnell und leicht an die Infos gelangen, möchte die Datenbank zumindest einfach managen können – mit einer grafischen Oberfläche wie PHP MyAdmin.
Dicke Datenbanken wie zum Beispiel MySQL[1] oder PostgreSQL[2] laufen problemlos auf Highend-Webservern wie auch auf dem heimischen Desktop. Um sie zu pflegen, gibt es grafische Konfigurations- und Administrationsprogramme. Auf dem gehosteten Rechner darf es aber schon ein Webfrontend sein – wozu betreibt man schließlich einen Webserver. Egal wo der Admin eine Datenbank aufsetzt – eines ist immer das Gleiche: Vor den Erfolg hat der Herr den Schweiß gesetzt. Das schließt Benutzerkonten einrichten ebenso ein, wie Tabellen anlegen oder löschen.
Genau dort geraten Unerfahrene aber oft ins Straucheln: Weil Konfigurationstools meist nur auf der Kommandozeile laufen, kann von Benutzerfreundlichkeit nicht die Rede sein. Eine Lösung für Datenbank-Anfänger muss her, die ihnen eine einfache, intuitive Oberfläche an die Hand gibt. Eine, die dabei alle Möglichkeiten ausschöpft, eine wie PHP MyAdmin für MySQL[4].
Immer dabei
PHP MyAdmin gilt als Standardapplikation und liegt jeder aktuellen Linux-Distribution bei. Wer Debian Woody einsetzt, sollte allerdings erwägen, eine aktuelle Version aus dem Sourcecode zu kompilieren, die aus dem Stable-Zweig ist leicht abgehangen.
In den meisten Fällen sollte bei jeder Default-Installation auch ein vorkonfigurierter Webserver dabei sein. Hier noch Hand anlegen ist nur erforderlich, wenn die Datenbank auf einem anderen Rechner läuft: Dann müssen in der Datei »config.inc.php« unter »Server(s) configuration« die Werte »host « und möglicherweise »port « angepasst werden. Ist beim MySQL-Server der Zugriff per TCP/IP deaktiviert, dann ist noch die Variable »connect_type« auf »socket« zu setzen. Der Webserver mit PHP MyAdmin muss in diesem Fall zwingend auf demselben Rechner laufen wie die MySQL-Datenbank.
Das Beispiel geht davon aus, dass der Wert »auth_type« in der Konfigurationsdatei auf »cookie« gesetzt ist – das ist die bequemste Authentifizierung. Ist PHP MyAdmin installiert und konfiguriert, ruft man es im Browser unter der URL [http://localhost/phpmyadmin/] auf. Beim ersten Login gibt sich der Benutzer als »root« zu erkennen. Das Standardpasswort des MySQL-Administrators sollte in der Dokumentation zum Paket zu finden sein, bei Debian ist es – wie bei vielen Distributionen – leer.
Um PHP MyAdmin wie beschrieben benutzen zu können, müssen im Browser Cookies aktiviert sein. Sollte die Anmeldung fehlschlagen, obwohl das Passwort korrekt ist und Cookies aktiviert sind und obwohl beim Anlegen des Benutzers unter »Host« die Option »Jeder Host« angegeben ist, dann sollte der künftige Admin prüfen, ob die Datenbank überhaupt Logins von anderen Adressen als »localhost« akzeptiert. Infos gibt die MySQL-Dokumentation[5].
Aller Anfang
Abbildung 1 zeigt PHP MyAdmin nach dem ersten Login – als »Language« ist »German« ausgewählt: Der blau hinterlegte Teil mit Dropdown-Menü am linken Rand zeigt – wenn eine Datenbank geöffnet ist – eine Liste der enthaltenen Tabellen. Der rechte Teil gliedert sich in zwei Spalten: Unter »MySQL« lassen sich Befehle ausführen, die MySQL direkt betreffen. Unter »phpMyAdmin« lässt sich die Sprache umstellen, die Dokumentation anzeigen oder die Projekt-Homepage aufrufen.
Die Arbeit mit einer MySQL-Datenbank beginnt typischerweise mit dem Anlegen eines Benutzeraccounts. Ähnlich wie überall in der Unix-Welt gilt auch hier der Grundsatz, dass »root« ausschließlich administrative Aufgaben hat. Um einen neuen Benutzer hinzuzufügen, wählt er auf der Startseite den Punkt »Rechte« und klickt im Dialog auf »Neuen Benutzer hinzufügen«.
Im folgenden Dialog bestimmt er unter »Benutzername«, wie das neue Konto heißen soll – im Beispiel »lm-testbenutzer«. Unter »Host« legt er die Maschine fest, von der aus sich der Benutzer anmelden darf. Mit dem Eintrag »localhost« wird MySQL jeden Versuch, sich von einem anderen Rechner aus einzuwählen, zurückweisen.
Unter »Globale Rechte« ist festgelegt, wie sich die Rechte des Benutzer auf verschiedene Datenbanken erstrecken: MySQL teilt sein Rechtesystem in globale und Datenbank-spezifische Berechtigungen. Ein Benutzer kann auf eine Datenbank vollen Lese- und Schreibzugriff haben, auf andere Datenbanken nur Lese- oder gar keine Zugriffsrechte. Die MySQL-Hauptdatenbank mit sensiblen Passwort-Informationen ist auf diese Weise vor unbefugten Benutzerzugriffen geschützt. Globale Rechte sollten so restriktiv wie möglich vergeben werden. Normale Benutzer benötigen in der Regel keine globalen Schreib- und Leserechte, ihre Zugriffsberechtigungen regelt MySQL gesondert.
»Ressourcenbeschränkungen« sind nur für Datenbanken mit hohen Zugriffsraten interessant und nicht Gegenstand dieses Beispiels. Passen die übrigen Einstellungen, legt ein Klick auf »OK« den neuen Benutzer an.

Abbildung 1: Der PHP-MyAdmin-Dialog nach dem ersten Aufruf. Die Warnung mahnt ein neues Passwort an.
Eine Datenbank
Das Beispiel braucht eine Datenbank, die Root einem Benutzer zuteilt: Dazu sucht er auf der Hauptseite oben unter »MySQL« den Eintrag »Neue Datenbank anlegen«, trägt dort den Namen der neuen Datenbank ein – hier »linux-magazin« – und klickt auf »Anlegen«. Anschließend bestätigt PHP MyAdmin, dass die Datenbank erstellt wurde, und öffnet sie. Die Ansicht hat sich verändert: »linux-magazin« im Dropdown-Menü auf der linken Seite zeigt die ausgewählte Datenbank an. Im rechten Teil gibt es nur eine Option: »Neue Tabelle in Datenbank Name erstellen«. Mit diesem Eintrag geht es weiter.
Eine Tabelle
Im Feld »Name« legt Root den Bezeichner der neuen Tabelle fest. Unter »Felder« bestimmt er die Spaltenanzahl. Das Beispiel wählt »Heft-Nummer«, »Jahrgang«, »Datum des Erscheinens« sowie »Schlagwörter«, um das Linux-Magazin zu archivieren – also insgesamt vier Felder, als Name eignet sich »Hefte«. Der nächste Dialog spezifiziert die einzelnen Felder der Tabelle. Dazu gehören mindestens die Angaben über den Namen des Datenfelds, seinen Datentyp und seine Größe. Ein Klick auf »Dokumentation« unter »Typ« ruft die MySQL-Kurzreferenz zu diesem Thema auf.
Das erste Datenfeld in der Tabelle, »Nummer«, nimmt die Monatszahl des Hefts auf. Da das Feld nur maximal zwei Ziffern enthalten wird (01 bis 12), setzt man den »Typ« auf »INT« und die »Länge« auf »2«. Ganz ähnlich beim zweiten Feld, der »Jahreszahl«: »INT« als Datentyp und »4« als »Länge«.
Das dritte Feld, »Datum des Erscheinens«, hat eine Besonderheit: Datumsangaben haben bei MySQL den eigenen Datentyp »DATE« mit der Syntax » YYYY-MM-DD« – für das Linux-Magazin, Heft 10/2003, also »2003-09-04«. Die Länge muss hier nicht angegeben werden, das Feld darf leer bleiben. Für das letzte Feld, »Schlagwörter«, ist »TINYTEXT« als Wert sinnvoll. Dann darf die Spalte maximal 255 Zeichen groß sein – genügend Platz, um den Heftinhalt mit ein paar Schlagwörtern zu beschreiben. »Länge« bleibt auch hier leer.
Recht haben
Bisher besitzt der Benutzer eine Datenbank mit einer Tabelle. Wollte er allerdings darauf zugreifen, bekäme er nur eine Fehlermeldung zu sehen: Noch hat er selbst keine Zugriffsrechte. Also geht er über das Dropdown-Menü am oberen linken Fensterrand und den Eintrag »(Datenbanken) …« zurück auf die PHP-MyAdmin-Hauptseite und klickt als Root auf »Rechte« und dann auf »Bearbeiten« unter »Aktion« neben dem »lm-testbenutzer«. Auf der neuen Seite unter dem Dialog zum Ändern der globalen Rechte liegt der Punkt »Datenbankspezifische Rechte«. Zu wählen ist die Datenbank »linux-magazin«.
»Rechte ändern« bedeutet zuteilen oder wegnehmen. Die Befehle sind drei Bereichen zugeordnet: »Daten« beschreibt MySQL-Kommandos, die den Inhalt bestehender Tabellen verändern. »Struktur« beschreibt Befehle, die den Inhalt ganzer Datenbanken verändern, zum Beispiel neue Tabellen anlegen oder löschen oder einen Index erstellen. Der dritte Bereich, »Administration«, legt fest, ob ein Benutzer anderen Benutzern erlauben darf, auf die Datenbank zuzugreifen (»GRANT«).
Die Rechtevergabe lässt sich noch weiter präzisieren: Soll ein Benutzer nicht Zugriff auf eine ganze Datenbank, sondern nur auf eine enthaltene Tabelle haben, wählt der Admin unter »Tabellenspezifische Rechte« eine Tabelle aus und erlaubt oder verbietet im Dialog die Kommandos »SELECT«, »INSERT«, »UPDATE« oder »REFERENCES« explizit für jede Tabellenspalte. Das geht auch mit den anderen MySQL-Kommandos. Im vorliegenden Beispiel bekommt »lm-testbenutzer« Vollzugriff auf die Datenbank »linux-magazin« mit Admin-Rechten (siehe Abbildung 2).
Der erste Login
Nach dem Login als »lm-testbenutzer« hat die Arbeitsfläche merklich weniger Symbole und Auswahlmöglichkeiten als vorher die von »root«: MySQL blendet aus, was ohnehin verboten ist. Eine geöffnete Datenbank zeigt links die enthaltenen Tabellen – hier der einzige Eintrag: »Hefte«. Sobald man die Tabelle anklickt, öffnet sich der Standarddialog mit Menüpunkten wie »Struktur« oder »Exportieren«. Unter »Struktur« sind Funktionen vereint, die den strukturellen Aufbau, in erster Linie die Felder, verwalten. Die Links unter »Aktion« verändern oder löschen Felder. Ein Klick auf »SQL« in der Buttonreihe öffnet ein Eingabefeld, in dem sich die SQL-Befehle direkt absetzen lassen.
»Exportieren« bedeutet nichts anderes als einen Dump der Tabelle. Der Dump erfolgt im Textformat ins Browserfenster – ist also bereit für Cut & Paste – oder auf Wunsch auch in einem anderen Ausgabeformat. Zur Wahl stehen eine SQL-Syntax für andere Datenbanken, ein Latex- oder ein XML-kompatibles Format. Die Standardoptionen für die Datentypen können meistens beibehalten werden (siehe Abbildung 3). Unter der Option »Operationen« finden sich unterschiedliche Möglichkeiten, die Tabelle zu sortieren, verschieben, umzubenennen oder zu duplizieren.
PHP-Code per Klick
Eine große Arbeitserleichterung ist die eingebaute Funktion, die auf Klick PHP-Code erzeugt. PHP MyAdmin protokolliert jede Aktion in einem gesonderten Fenster im oberen Teil des rechten Bildrahmens als SQL-Code. Ein Klick auf »PHP-Code erzeugen« macht aus diesem SQL-Code eine PHP-Variable, die der Benutzer auf einer eigenen Website verwenden darf – bei kurzen Befehlen ist das wenig, bei großen und langen Befehlsketten aber sehr hilfreich.
Fazit
PHP MyAdmin ist eine praktische Hilfe für den Umgang mit MySQL. Man muss beim Einsatz lediglich beachten: Finger weg von der MySQL-Systemdatenbank »mysql«. Änderungen dort sollten nur über die in PHP MyAdmin vorgesehenen Funktionen geschehen – sonst ist möglicherweise eine Neuinstallation fällig. Bei Problemen hilft die PHP-MyAdmin-Dokumentation meist weiter – leider nur in englischer Sprache. (fan)
Infos |
|
[1] Die MySQL-Datenbank: [http://www.mysql.com/] [2] Die PostgreSQL-Datenbank: [http://www.postgresql.org/] [3] KMusic DB – MP3-Archivierer für PostgreSQL: [http://kmusicdb.sf.net/] [4] PHP MyAdmin: [http://www.phpmyadmin.net/] [5] MySQL-Dokumentation: [http://www.mysql.com/documentation/index.html] |
Der Autor |
|
Martin Loschwitz kommt aus Niederkrüchten. Wenn er nicht grade damit beschäftigt ist, über Datenbanken zu philosophieren, hilft er tatkräftig dabei, die Debian GNU/Linux Distribution weiterzuentwickeln. |








