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:

user$ mysql -u root -p meinedatenbank Enter password: *******

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.

mysql> status mysql Ver 15.1 Distrib 5.5.44-MariaDB, for debian-linux-gnu (x86_64) Connection id: 319042 ... Server: MariaDB Server version: 5.5.44-MariaDB-1 mariadb.org binary distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 101 days 10 hours 26 min 55 sec Threads: 1 Questions: 9479450 Slow queries: 1067 Opens: 88575 Flush tables: 4 Open tables: 400 Queries per second avg: 1.081

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:

mysql> SET NAMES utf8;

»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:

user$ mysql -u root -p meinedatenbank < kommandos.sql Enter password: *******

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:

root# mysqladmin --defaults-file=/etc/mysql/debian.cnf kommando ...

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.

user$ mysqladmin -u root -p create neuedatenbank Enter password: ******* user$ mysqladmin -u root -p extended-status ... user$ mysqladmin -u root -p processlist ...

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.

Die MySQL Workbench

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).

MySQL mit phpMyAdmin im
  Webbrowser administrieren

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:

<VirtualHost _default_:443> ... Include /etc/phpmyadmin/apache.conf </VirtualHost>

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: