Aus Linux-Magazin 11/2003

MySQL mit PHP MyAdmin administrieren

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.

Abbildung 1: Der PHP-MyAdmin-Dialog nach dem ersten Aufruf. Die Warnung mahnt ein neues Passwort an.

Abbildung 2: Der PHP-MyAdmin-Dialog zum Hinzufügen eines Benutzers - das darf nur Root.

Abbildung 2: Der PHP-MyAdmin-Dialog zum Hinzufügen eines Benutzers – das darf nur Root.

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.

Abbildung 3: Das Erstellen einer neue Tabelle ist bei PHP MyAdmin kein Problem.

Abbildung 3: Das Erstellen einer neue Tabelle ist bei PHP MyAdmin kein Problem.

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)

Abbildung 4: »lm-testbenutzer« wird mit Vollzugriff auf die Datenbank »linux-magazin« ausgestattet.

Abbildung 4: »lm-testbenutzer« wird mit Vollzugriff auf die Datenbank »linux-magazin« ausgestattet.

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.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben