MySQL ist ein qualitativ hochwertiger Mehrbenutzer-SQL-Datenbankserver mit Multithreading (SQL, Structured Query Language, strukturierte Abfragesprache). Dieses Kapitel beschreibt kurz die Standardkonfiguration von MySQL auf Ihrem neu installierten OpenLinux eServer-System. Außerdem erlernen Sie die folgenden Aufgaben:
In den zusätzlichen Ressourcen am Ende des Kapitels erhalten Sie Verweise auf zusätzliche Informationsquellen zur allgemeinen Datenbanktheorie, zu SQL und zu MySQL im Besonderen.
Das nachfolgende Listing zeigt die komplette Konfigurationsdatei, /etc/my.cnf, für den MySQL-Datenbankserver. Die einzelnen Abschnitte der Konfigurationsdatei werden im Anschluss besprochen. Beachten Sie, dass diese Konfigurationsdatei alle MySQL-Server betrifft. Falls Sie die Konfigurationsinformationen für einzelne Server festlegen möchten, speichern Sie die Konfigurationsdateien in den Verzeichnissen mit den einzelnen Datenbanken. Wenn Sie analog dazu Serveroptionen für einzelne Benutzer definieren möchten, legen Sie für jeden Benutzer eine eigene Kopie der MySQL-Konfigurationsdatei an. Wenn Sie eine umfassende Liste der Konfigurationsoptionen von MySQL anzeigen möchten, führen Sie folgenden Befehl aus:
# Beispiel mysql-Konfig-Datei.
socket = /var/lib/mysql/mysql.sock
Der erste Abschnitt gilt für alle MySQL-Clients. Wäre die password-Option nicht herauskommentiert, würdemy_password an alle MySQL-Clients gesendet werden. Diese Option wird in der Regel in der persönlichen Konfigurationsdatei von Benutzern verwendet. Die Optionport gibt die von MySQL verwendete Portnummer an - 3306 ist der Standardport von MySQL. Die Option socket gibt den vollständigen Pfadnamen des Sockets an, den MySQL für seinen Betrieb verwendet.
Die nächsten Abschnitte der Datei definieren Konfigurationsoptionen für bestimmte Programme, wie z.B. den Serverdämon, mysqld, und einen Dumpclient, mysqldump. Der Programmname steht in eckigen Klammern
socket = /var/lib/mysql/mysql.sock
set-variable = max_allowed_packet=1M
set-variable = thread_stack=128K
Die Optionen port und socket wurden bereits besprochen. Die drei set_variable-Anweisungen legen Optimierungsparameter für die MySQL-Datenbankengine fest. key_buffer gibt an, wieviel Arbeitsspeicher für Indizes verwendet wird; max_allowed_packet legt die Obergrenze für Netzwerkpakete fest, die MySQL lesen kann; thread_stack reserviert den angegebenen Speicherplatz im Stack für threadrelevante Operationen. Solange Sie noch den Umgang mit MySQL erlernen, sollten Sie diese Werte unverändert lassen.
mysql ist ein Befehlszeilenclient für die Kommunikation mit dem Server, vor allem zur Durchführung von Abfragen der Datenbank und zur Statusabfrage der Datenbank und des Servers selbst. no_auto_rehash weist mysql an, die bisher eingegegebenen Befehle nicht neu zu sortieren.
set-variable = max_allowed_packet=16M
max_allowed_packet und key_buffer wurden bereits besprochen. Bei mysqldump handelt es sich um ein Dienstprogramm, das eine Datenbank als Serie von SQL-Anweisungen oder als tabulatorgetrennte Textdatei exportiert. isamchk ist ein weiteres Dienstprogramm, das zum Beschreiben, Überprüfen, Optimieren und Reparieren von MySQL-Tabellen dient.
Bevor Sie sich mit einer MySQL-Datenbank verbinden können, muss der Server aktiv sein. Durchsuchen Sie die Prozesstabelle nach einem Programm mit der Bezeichnung mysqld. Falls Sie das Programm nicht sehen, starten Sie den Server mit dem folgenden Befehl:
# /etc/rc.d/init.d/mysql start
Sobald der Server aktiv ist, geben Sie mysql an der Befehlszeile ein. Die Ausgabe sollte in etwa wie folgt aussehen:
Welcome to the MySQL monitor. Commands end with ; or \q.
Your MySQL connection id is 1 to server version 3.22.25-log
Der Schalter -u muss von einem Benutzernamen gefolgt sein, in diesem Fall root. Das letzte Argument gibt den Namen der Datenbank an, mit der Sie eine Verbindung herstellen möchten. An dieser Stelle ist der Server zur Entgegenname von Befehlen bereit. Natürlich kennen Sie noch keine, und es existiert auch noch keine Datenbank. Wir werden auf diese Aspekte in den nächsten beiden Abschnitten eingehen. Um den Client zu beenden, geben Sie quit ein, und drücken Sie die Eingabetaste.
Der LIZARD-Installer erstellt einen Standardbenutzer, root, sowie eine Standarddatenbank, mysql. Da das Kennwort vonroot anfangs leer ist, besteht der erste Schritt darin, ein Kennwort zum Schutz vor unberechtigten Zugriff festzulegen.
mysql> UPDATE user SET Password=PASSWORD(`new_password')
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Query OK, 0 rows affected (0.03 sec)
Zeilen, denen mysql> nicht vorausgeht, weisen auf eine Ausgabe der Datenbankengine hin. Ersetzen Sie new_password mit dem von Ihnen gewählten Kennwort. Beachten Sie, dass Befehle mit einem ; beendet werden müssen. Nach Festlegung des Kennworts müssen Sie es eingeben, um auf die Datenbank als Benutzer mit der Bezeichnung root zugreifen zu können. Danach müssen Sie beim Starten die Option -p (password) verwenden, um sich anzumelden.
Nachdem Sie nun die Datenbank gesichert haben, können Sie Benutzer hinzufügen und Privilegien (Zugriffsrechte) mit Hilfe der GRANT-Anweisung bearbeiten. Angenommen, Sie haben einen Benutzer mit dem Namen dbhack, der Zugriff auf die Datenbank von einem Host mit der Bezeichnung localhost aus und dem Kennwort stupid wünscht. Führen Sie die folgende SQL-Anweisung aus:
GRANT SELECT, INSERT, UPDATE, DELETE
Diese Anweisung ermöglicht dbhack das Anzeigen, Bearbeiten und Löschen von Einträgen in der Datenbank mysql.
Dieser Abschnitt zeigt, wie Sie eine neue Datenbank in MySQL und eine neue Tabelle in der Datenbank erstellen.
Angenommen, der Benutzer dbhack möchte eine Datenbank mit der Bezeichnung mylib erstellen, um seine Bibliothek zu verwalten. Die Erstellung der Datenbank ist ein zweistufiger Prozess. Zunächst muss der MySQL-Administrator die Datenbank erstellen und dem Benutzer dafür dbhack Rechte zuweisen. Anschließend erstellt dbhack die Datenbanktabellen und füllt diese mit Daten aus.
Wie bereits erwähnt, muss der Administrator die Datenbank erstellen. Folglich startet root den mysql-Client, und führt die folgenden SQL-Befehle aus:
mysql> GRANT ALL ON mylib TO dhback@localhost;
Die erste SQL-Anweisung erstellt die Datenbank. Die zweite verleiht dbhack, bei Verbindung über localhost, administrative Rechte über die Datenbank. Um zu prüfen, ob die Datenbank erstellt wurde, verwenden Sie die SQL-Anweisung SHOW DATABASES;.
Nachdem der MySQL-Administrator die Datenbank erstellt hat, muss dbhack seine innere Struktur erstellen und diese mit Daten füllen. Zunächst wird die Verbindung hergestellt:
Die Ausführung des Befehls SHOW TABLES zeigt an, dass noch keine Tabellen existieren:
Aus Gründen der Übersichtlichkeit möchte dbhack die Bücher nur nach Titel, Autor und Veröffentlichungsjahr verwalten. Der SQL-Befehl dafür wird im Anschluss gezeigt:
Query OK, 0 rows affected (0.00 sec)
Jetzt, da die Tabelle exisitiert, kann diese mit Daten ausgefüllt werden. MySQL unterstützt eine große Teilmenge der Standard-SQL-Anweisungen, deshalb seien Sie auf eines der SQL-Lernprogramme verwiesen, das im Abschnitt Zusätzliche Ressourcen erwähnt wird.