34.2Administrationswerkzeuge
Zu MySQL und MariaDB gibt es unzählige Administrationswerkzeuge. Standardmäßig stehen die Kommandos mysql, mysqldump sowie einige weitere, textbasierte Werkzeuge zur Verfügung. Optional können Sie diverse weitere Programme installieren, die aber teilweise einen grafischen Desktop voraussetzen. Dieser Abschnitt gibt einen kurzen Überblick über die wichtigsten Werkzeuge. Nicht enthalten sind die speziell für Backups konzipierten Kommandos mysqldump und mylvmbackup, die ich in Abschnitt 34.3, »Backups«, beschreibe.
mysql
Hinter dem Programm mysql verbirgt sich nicht etwa der MySQL-Server (der hat den Programmnamen mysqld), sondern ein Kommandozeilen-Client. Damit können Sie eine Verbindung zum MySQL- oder MariaDB-Server herstellen und dann SQL-Kommandos ausführen. Soweit es sich dabei um SELECT-Kommandos handelt, zeigt das Programm die Abfrageergebnisse im Textmodus an.
Beim Start von mysql geben Sie normalerweise mit -u den MySQL-Benutzernamen an. Die Option -p bewirkt, dass Sie nach dem Start das dazugehörende Passwort angeben können. Wenn der MySQL-Server nicht auf dem lokalen Rechner läuft, geben Sie den Hostnamen mit -h an. Optional können Sie auch eine Standarddatenbank angeben, die als Datengrundlage für alle weiteren SQL-Kommandos gilt:
Anschließend können Sie interaktiv SQL-Kommandos eingeben, die Sie durch einen Strichpunkt abschließen. Das mysql-spezifische Kommando status, das auch ohne Strichpunkt ausgeführt werden kann, zeigt Informationen zur aktuellen Verbindung sowie Eckdaten des MySQL-Servers an. (Strg)+(D) beendet das Programm.
Bei älteren MySQL-Versionen lautet die Ausgabe von status beim Eintrag Client characterset oft latin1. Dann werden internationale Sonderzeichen in Linux-Textkonsolen falsch dargestellt, weil dort standardmäßig der UTF8-Zeichensatz gilt. Abhilfe schafft das folgende SQL-Kommando:
»Intelligentere« Client-Programme kümmern sich selbst um die korrekte Einstellung des Zeichensatzes. MySQL selbst kommt mit allen erdenklichen Zeichensätzen zurecht. Sie müssen nur darauf achten, dass Sie beim Einrichten neuer Tabellen den richtigen Zeichensatz für Textspalten wählen.
Für administrative Zwecke und insbesondere zum Einspielen von Backups kann mysql auch SQL-Kommandos aus einer *.sql-Datei verarbeiten:
mysqladmin
mysqladmin ermöglicht es, verschiedene administrative Aufgaben in Form eines Kommandos auszuführen. Zu allen mysqladmin-Kommandos gibt es auch gleichwertige SQL-Kommandos (z.B. CREATE DATABASE). Der Vorteil von mysqladmin besteht darin, dass es dabei hilft, wiederkehrende Aufgaben durch Scripts zu automatisieren.
Wie bei mysql geben Sie mit der Option -u den Benutzernamen und mit -h den Hostnamen (standardmäßig localhost) an. -p ohne weitere Angaben führt zur einer interaktiven Passwortabfrage. Die können Sie durch -ppassword ohne ein Leerzeichen nach -p vermeiden. Diese Bequemlichkeit hat aber den Nachteil, dass das Passwort im Klartext übertragen wird. Eine alternative Vorgehensweise besteht darin, die Login-Daten in einer Passwortdatei zu speichern bzw. auf den unter Debian und Ubuntu bereits vordefinierten MySQL-Benutzer debian-sys-maint zurückzugreifen. Dessen Passwortdatei /etc/mysql/debian.cnf ist allerdings nur für den Linux-root lesbar. Der Aufruf von mysqladmin sieht dann so aus:
Einen Überblick über die für mysqladmin verfügbaren Kommandos gibt mysqladmin --help. Die folgenden Zeilen geben einige Beispiele: Das erste Kommando erzeugt eine neue Datenbank, das zweite liefert eine Liste aller MySQL-Statusvariablen und das dritte gibt eine Liste aller aktiven MySQL-Threads (Verbindungen) zurück.
MySQL Workbench
MySQL stellt mit der MySQL Workbench (siehe Abbildung 34.1) ein hochwertiges Administrationsprogramm mit grafischer Benutzeroberfläche zur Verfügung. Sie können damit den Datenbank-Server überwachen, seine Einstellungen ändern, Benutzerrechte einstellen, neue Datenbanken einrichten, vorhandene Datenbanken auslesen, verändern und sichern, Datenbankschemas entwickeln etc.
Die meisten Funktionen der MySQL Workbench stehen gleichermaßen für MySQL und MariaDB zur Verfügung; einzig die Konfigurationsfunktionen zur Veränderung von my.cnf sind MySQL-spezifisch und bei MariaDB-Installationen gesperrt.
Abbildung 34.1Die MySQL Workbench
Die meisten Distributionen stellen für die MySQL Workbench eigene Pakete zur Verfügung. Zu den prominenten Ausnahmen zählen CentOS, Fedora und RHEL. Glücklicherweise gibt es auf der MySQL-Webseite geeignete Pakete, die sich mühelos installieren lassen:
http://dev.mysql.com/downloads/tools/workbench
phpMyAdmin
Das bekannteste MySQL-Administrationsprogramm ist phpMyAdmin. Sein größter Vorteil besteht darin, dass das Programm über einen Webbrowser bedient wird. Der eigentliche phpMyAdmin-Code läuft direkt auf dem Server. Das funktioniert auch dann, wenn der MySQL-Server aus Sicherheitsgründen so konfiguriert ist, dass keine Verbindungen über das Netzwerk zulässig sind.
Bei vielen Distributionen gibt es fertige phpMyAdmin-Pakete. Sollte das bei Ihrer Distribution nicht der Fall sein, laden Sie phpMyAdmin von der folgenden Website herunter und installieren die PHP-Dateien in ein Verzeichnis, auf das der Webserver Apache zugreifen kann:
http://www.phpmyadmin.net/home_page
Nach der Installation erreichen Sie die Administrationsoberfläche in der Regel über die Adresse http://hostname/phpMyAdmin (siehe Abbildung 34.2).
Abbildung 34.2MySQL mit phpMyAdmin im Webbrowser administrieren
Beachten Sie noch Folgendes zur Ubuntu- bzw. Debian-spezifischen Konfiguration von phpMyAdmin: Alle Konfigurationsdateien befinden sich in /etc/phpmyadmin. Sofern Sie Apache als Webserver verwenden, kümmert sich apache.conf darum, das tatsächliche Installationsverzeichnis /usr/share/phpmyadmin durch einen Alias auf das Webverzeichnis phpmyadmin abzubilden.
Die Sicherheitseinstellungen in apache.conf betreffen standardmäßig nur das Setup-Script von phpMyAdmin, das Sie normalerweise aber gar nicht brauchen.
apache.conf wird durch einen symbolischen Link in /etc/apache2/conf.d in die Apache-Konfiguration integriert. Wenn Sie über das Protokoll HTTPS mit phpMyAdmin kommunizieren möchten, löschen Sie diesen Link und fügen dann eine Include-Anweisung für apache.conf in Ihre HTTPS-Konfigurationsdatei ein:
phpMyAdmin ist ein beliebtes Einfallstor für Cracker. Es gibt im Internet zahllose automatisierte Tools, die Webserver nach schlecht abgesicherten oder veralteten phpMyAdmin-Installationen absuchen. Ein fehlendes oder leicht erratbares MySQL-root-Passwort gibt dem Angreifer MySQL-Administratorrechte! Ergreifen Sie daher die folgenden Vorsichtsmaßnahmen:
-
Sichern Sie die MySQL-Installation ab, bevor Sie phpMyAdmin installieren (siehe Abschnitt 34.1, »Installation und Inbetriebnahme«).
-
Geben Sie dem phpMyAdmin-Verzeichnis einen Alias, der nicht ganz leicht erraten werden kann. http://mysite.de/pMa1 ist sicherer als http://mysite.de/phpmyadmin.
-
Akzeptieren Sie für das phpMyAdmin-Verzeichnis nach Möglichkeit nur das sichere https-Protokoll, nicht http.
-
Sichern Sie das phpMyAdmin-Verzeichnis auch auf Apache-Ebene durch ein Passwort ab, z.B. durch eine .htaccess-Datei (siehe Abschnitt 33.2, »Webverzeichnisse einrichten und absichern«).
-
Achten Sie darauf, dass Ihre phpMyAdmin-Version aktuell ist. Bei einigen Distributionen werden die phpMyAdmin-Pakete leider nur mangelhaft gewartet. Dann ist es sicherer, anstelle der Distributionspakete phpMyAdmin manuell zu installieren und regelmäßig zu aktualisieren.