MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl...

30
Deutsche Ausgabe Deckt MySQL 5 ab Russell J.T. Dyer & Lars Schulten Deutsche Übersetzung von Dorothea Heymann-Reder MYSQL IN A NUTSHELL O REILLY

Transcript of MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl...

Page 1: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Deutsche

Ausgabe

Deckt MySQL 5 ab

Russell J.T. Dyer & Lars Schulten

Deutsche Übersetzung von Dorothea Heymann-Reder

MYSQLIN A NUTSHELL

O’REILLY

Page 2: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend
Page 3: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

MYSQLIN A NUTSHELL

Russell Dyer & Lars Schulten

Deutsche Übersetzung von Dorothea Heymann-Reder

Beijing • Cambridge • Farnham • Köln • Paris • Sebastopol • Taipei • Tokyo

Page 4: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Kommentare und Fragen können Sie gerne an uns richten:O’Reilly VerlagBalthasarstr. 8150670 KölnTel.: 0221/9731600Fax: 0221/9731608E-Mail: [email protected]

Copyright der deutschen Ausgabe:© 2006 by O’Reilly Verlag GmbH & Co. KG1. Auflage 2006

Die Originalausgabe erschien 2005 unter dem TitelMySQL in a Nutshell bei O’Reilly Media, Inc.

Die Darstellung eines Graufischers im Zusammenhang mit dem Thema MySQL ist ein Warenzeichen von O’Reilly Media, Inc.

Bibliografische Information Der Deutschen BibliothekDie Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Deutsche Übersetzung: Dorothea Heymann-Reder, BornheimDeutsche Erweiterung und Aktualisierung: Lars Schulten, KölnLektorat: Alexandra Follenius, KölnKorrektorat: Oliver Mosler, KölnSatz: G&U e.Publishing Services GmbH, FlensburgUmschlaggestaltung: Ellie Volckhausen, Boston & Michael Oreal, KölnProduktion: Andrea Miß, KölnBelichtung, Druck und buchbinderische Verarbeitung: Druckerei Kösel, Krugzell; www.koeselbuch.de

ISBN-10 3-89721-341-9ISBN-13 978-3-89721-341-8

Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.

Page 5: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

| V

Inhalt

Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX

1 Einführung in MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Der Wert von MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Das MySQL-Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Lizenzierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Mailinglisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Bücher und andere Publikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Installation von MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Die Auswahl der Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Unix-Quelldistributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Unix-Binärdistributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Linux RPM-Distributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Mac OS X-Distributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Novell NetWare-Distributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Windows-Distributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Nach der Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Grundlagen von MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Der mysql-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Datenbank und Tabellen anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Daten anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Daten einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Daten auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Daten ordnen, eingrenzen und gruppieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Daten analysieren und bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Page 6: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

VI | Inhalt

Daten ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Daten löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Daten durchsuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Daten in größeren Mengen importieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Das Kommandozeilen-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Zum Schluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4 SQL-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Anweisungen nach Typ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Anweisungen und Klauseln in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . 35

5 SQL-Syntax für gespeicherte Routinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Anweisungen nach Funktionen gegliedert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110SQL-Anweisungen in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . . . . . . . 111

6 Stringfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Stringfunktionen nach Typ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Stringfunktionen in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . . . . . . . . 120

7 Datums- und Uhrzeitfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Datums- und Uhrzeitfunktionen nach Funktionstyp . . . . . . . . . . . . . . . . . . . . . . 143Datums- und Uhrzeitfunktionen in alphabetischer Reihenfolge . . . . . . . . . . . . . 143

8 Mathematische Funktionen und Aggregatfunktionen . . . . . . . . . . . . . . . . . . 168Funktionen in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

9 Diverse Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Funktionen in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

10 Der MySQL-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194MySQL-Programme konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194mysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196mysqld_multi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203mysqld_safe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204mysqlmanager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

11 Client- und Administrationsprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210mysql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211mysqladmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217MySQL Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219MySQL Query Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226MySQL Table Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

Page 7: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Inhalt | VII

12 Hilfsprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232comp_err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232isamchk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233make_binary_distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233msql2mysql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233my_print_defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233myisamchk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234myisamlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237myisampack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238mysqlaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239mysqlbinlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241mysqlbug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243mysqlcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243mysqldump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245mysqldumpslow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250mysqlhotcopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250mysqlimport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252mysqlshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254perror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

13 Die C-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Die MySQL-C-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Funktionen in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Datentypen der C-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

14 Die PHP-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303PHP mit MySQL nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303MySQLi-Funktionen in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . . . . . . 309Die MySQLi-Klassenbibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338Unterschiede zwischen MySQL- und MySQLi-Funktionen . . . . . . . . . . . . . . . . . 342

15 Die Perl-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346Perl DBI mit MySQL nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346Perl DBI: Referenz zu den Methoden und Funktionen . . . . . . . . . . . . . . . . . . . . . 350Attribute für Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

A Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

B Storage Engines (Tabellentypen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377Storage Engines einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377MySQL-Storage Engines in alphabetischer Reihenfolge . . . . . . . . . . . . . . . . . . . . 378

Page 8: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

VIII | Inhalt

C Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

D Zeichensätze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390Zeichensätze und Collations einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390MySQL-Zeichensätze und -Collations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

E Die INFORMATION_SCHEMA-Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398Die Tabellen der INFORMATION_SCHEMA-Datenbank . . . . . . . . . . . . . . . . . 400

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

Page 9: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

| IX

FirstKapitel 8

Einleitung

MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässlich und schnell und wird zunehmend in Bereicheneingesetzt, die bisher von Oracle oder MS SQL Server dominiert waren. Dank der vielenDienstprogramme, die MySQL begleiten, lässt es sich ziemlich mühelos administrieren.Und die vielen APIs erleichtern die Entwicklung eigener Software, die auf MySQL aufsetzt.

Dieses Buch ist eine Referenz für die Anweisungen und Funktionen von MySQL, seineadministrativen Dienstprogramme und seine beliebtesten APIs. Die ersten Kapitel sollenIhnen dabei helfen, mit MySQL zu starten. Am Anfang jedes API-Kapitels finden Sie darü-ber hinaus ein kurzes Tutorial zum jeweiligen Thema.

Als dieses Buch geschrieben wurde, war MySQL 5 (5.0.19) die aktuelle MySQL-Version.Dieses Buch berücksichtigt alle neuen Features von MySQL 5 und natürlich alle Featuresälterer Versionen. Features, die in MySQL 5 eingeführt wurden, werden als solche gekenn-zeichnet. Explizite Release-Nummern werden angegeben, wenn ein Feature nach den erstenProduktionsversionen (4.1.7 und 5.0.15) eingeführt wurde.

Das Ziel dieses BuchsDieses Buch soll eine Schnellreferenz für folgende Features sein:

• MySQL-Anweisungen und -Funktionen

• Die gebräuchlichsten APIs für den Zugriff auf MySQL-Datenbanken

• Kommandozeilenoptionen und Konfigurationsinformationen für den MySQL-Serverund die MySQL-Dienstprogramme

Viele Kapitel beginnen mit kurzen Tutorials, doch das wichtigste Ziel dieses Buchs ist es, Wis-senslücken von Lesern zu füllen, die sich bereits mit relationalen Datenbanken auskennen.

Die Beschreibungen der einzelnen Anweisungen und Funktionen beginnen jeweils mit einerkurzen Gedächtnisstütze und gehen dann zu den ausführlicheren Erklärungen über. WennSie eine Funktion eigentlich bereits kennen, aber sich nicht mehr genau an die Syntax erin-

Page 10: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

X | Einleitung

Linksnern können, werden Sie diese an erster Stelle finden. Benötigen Sie mehr Informationen,um Ihre Erinnerung auf Trab zu bringen oder zu klären, welche Möglichkeiten Ihnen diebetreffende Funktion bietet, so finden Sie diese in den ersten Sätzen der Erläuterung. WennSie Genaueres über die Einsatzmöglichkeiten der Funktion erfahren möchten, lesen Sie ein-fach die nachfolgende ausführlichere Erklärung. Zu den meisten Funktionen gibt es auchAnwendungsbeispiele.

Kurz: Ziel dieses Buchs ist eine kompakte, aber dennoch möglichst umfassende Darstellung,wobei jeder Eintrag zum Ende hin immer mehr ins Detail geht.

Der Aufbau dieses BuchsDas Buch gliedert sich in fünfzehn Kapitel und fünf Anhänge:

Kapitel 1, Einführung in MySQL, erläutert die wichtigsten Komponenten von MySQL undgibt Hinweise, wo Sie weitere Informationen bekommen und mit der MySQL-Communityin Kontakt treten können.

Kapitel 2, Installation von MySQL, erklärt für die meisten von MySQL AB unterstützten Sys-teme, wie Sie das Datenbanksystem ans Laufen bekommen. Dieses Kapitel müssen Sie nurdann lesen, wenn Sie MySQL noch nicht installiert haben.

Kapitel 3, Grundlagen von MySQL, ist eine Einführung in SQL und das Kommandozeilen-Tool mysql. Es ersetzt keinen Lehrgang für SQL und relationalen Datenbankentwurf, son-dern gibt Ihnen lediglich eine Orientierungshilfe.

Kapitel 4, SQL-Anweisungen, ist das wichtigste Kapitel dieses Buchs: eine vollständigeSammlung aller von MySQL unterstützten SQL-Anweisungen und -Klauseln.

Kapitel 5, SQL-Syntax für gespeicherte Routinen, bietet eine Beschreibung der SQL-Syntax-Elemente, die nur in gespeicherten Routinen (Funktionen, Prozeduren, Triggern) verfügbarsind.

Kapitel 6, Stringfunktionen, behandelt SQL-Funktionen für die Verarbeitung von Textdaten.

Kapitel 7, Datums- und Uhrzeitfunktionen, beschreibt SQL-Funktionen zur Verarbeitung derdiversen Datums- und Uhrzeitformate, die in MySQL zur Verfügung stehen.

Kapitel 8, Mathematische Funktionen und Aggregatfunktionen, erklärt die mathematischenSQL-Funktionen und Funktionen, mit denen Daten in Spalten kombiniert werden, wie bei-spielsweise MAX() und COUNT().

Kapitel 9, Diverse Funktionen, kümmert sich um SQL-Funktionen, die das Datenbankmodulsteuern oder Informationen darüber liefern, und um Funktionen für sonstige Aufgaben.

Kapitel 10, Der MySQL-Server, behandelt die Optionen für den mysqld-Server und bieteteine kurze Einführung in die Grundstruktur von MySQL-Konfigurationsdateien.

Kapitel 11, Client- und Administrationsprogramme, beschreibt die wichtigsten Konsolen-und GUI-Programme zur Administration von und Arbeit mit MySQL.

Kapitel 12, Hilfsprogramme, beschreibt Utilities für die Arbeit mit dem MySQL-Server sowiemit MySQL-Datenbanken und den in ihnen gespeicherten Daten.

Kapitel 13, Die C-API, stellt die Datentypen und Funktionen der C-Bibliothek von MySQLvor.

Page 11: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Verwendung der Codebeispiele | XI

TAB!RechtsKapitel 14, Die PHP-API, präsentiert die PHP-Funktionen, mit denen MySQL-Datenbankenabgefragt und bearbeitet werden können.

Kapitel 15, Die Perl-API, stellt das Perl DBI-Modul und seine Funktionen vor, mit dem vonPerl aus auf MySQL-Datenbanken zugegriffen werden kann.

Anhang A, Datentypen, listet alle Datentypen auf, die von MySQL unterstützt werden.

Anhang B, Storage Engines (Tabellentypen), beschreibt verschiedene Typen von Tabellen,die MySQL zur Speicherung von Datenbankdaten bietet.

Anhang C, Operatoren, ist eine Auflistung aller MySQL-Operatoren, beispielsweise derRechensymbole und der Vergleichsoperatoren LIKE und IS NULL.

Anhang D, Zeichensätze, bietet eine kurze Einführung in die Zeichensatz-Unterstützung vonMySQL und eine Aufstellung aller von MySQL unterstützten Zeichensätze und Collations.

Anhang E, Die INFORMATION_SCHEMA-Datenbank, bietet eine Einführung in dieINFORMATION_SCHEMA-Metadaten-Datenbank und ihre Tabellen.

Zur deutschen Ausgabe dieses BuchsDie englischsprachige Originalausgabe von MySQL in a Nutshell wurde von Dorothea Hey-mann-Reder übersetzt und von Lars Schulten überarbeitet und um neue Features und Funk-tionen von MySQL 5 erweitert.

Typografische KonventionenIn diesem Buch gelten folgende typografischen Konventionen:

KursivWeist auf neue Begriffe, URLs, E-Mail-Adressen, Benutzernamen, Hostnamen, Datei-namen, Dateierweiterungen, Pfade, Verzeichnisse und Dienstprogramme sowie aufMenüs, Optionen und Buttons hin.

NichtproportionalschriftWird für Code, Konfigurationsoptionen, Variablen, Funktionen, Module, Dateiinhalteoder Befehlsausgaben verwendet.

Nichtproportionalschrift fettWird dort verwendet, wo der Benutzer Befehle oder anderen Text wörtlich eingebenmuss.

Nichtproportionalschrift kursivZeigt Stellen an, wo der Benutzer eigene Angaben oder Werte einsetzen muss.

Verwendung der CodebeispieleDieses Buch soll Ihnen vor allem bei der Arbeit helfen. Den Code, den Sie hier finden, dür-fen Sie generell in Ihren Programmen und Dokumentationen verwenden. Sie brauchen unsdeswegen nicht um Erlaubnis zu fragen, es sei denn, Sie reproduzieren einen großen Teil desCodes. Einige Beispiele: Wenn Sie ein Programm schreiben, in dem mehrere Codestückeaus diesem Buch genutzt werden, ist dafür keine Erlaubnis erforderlich; wenn Sie hingegen

Page 12: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

XII | Einleitung

Linkseine CD-ROM mit Beispielen aus O’Reilly-Büchern verkaufen oder verteilen, müssen Sieeine Erlaubnis einholen. Wenn Sie eine Frage beantworten, indem Sie dieses Buch und denBeispielcode daraus zitieren, benötigen Sie keine Erlaubnis; wenn Sie einen größeren Teilunseres Beispielcodes in Ihre Produktdokumentation aufnehmen, müssen Sie eine Erlaubnishaben.

Wir freuen uns, wenn Zitate aus unserem Buch mit Quellenangaben versehen werden, aberwir verlangen es nicht. Zu einer Quellenangabe gehören normalerweise der Titel, Autor,Verlag und die ISBN-Nummer. Zum Beispiel: »MySQL in a Nutshell von Russell J.T. Dyer &Lars Schulten, O’Reilly Verlag 2006, ISBN 3-89721-341-9«.

Wenn Sie nach eigener Einschätzung mehr Codebeispiele verwenden als erlaubt, kontaktie-ren Sie uns bitte unter [email protected].

DanksagungenVielen Dank an meinen Lektor Andy Oram für seine Tipps, fürs Lektorieren und für dasGlück, dieses Buch schreiben zu dürfen. Danke auch an Kasia Trapszo, Rick Rezinas undandere, die das Manuskript als technische Gutachter durchgesehen haben. Außerdemdanke ich Rikki Endsley (Lektor der Unix Review) für die Chance, die sie mir ganz am An-fang meiner Schriftstellerkarriere gegeben hat, und für die Hilfe, die sie, chromatic (derHerausgeber von ONLamp.com) und mehrere andere Zeitschriftenherausgeber mir zuteilwerden ließen, damit ich meine Fähigkeiten entwickeln konnte. Ganz besonderen Dank anKathryn Barrett (Herausgeberin für O’Reilly) für ihre moralische Unterstützung und dieguten Ratschläge in den letzten Jahren. Und zum Schluss danke ich meinen Freunden:Rusty Osborne für sein geduldiges Zuhören und Michael Zabalaoui dafür, dass er mir unterder Woche fast immer Mittagessen brachte, als ich an diesem Buch saß, anstatt einer ge-regelten Arbeit nachzugehen.

Page 13: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

| 1

FirstKapitel 1

1Einführung in MySQL

MySQL ist ein relationales Open Source-Datenbank-Managementsystem, das von Michael»Monty« Widenius 1995 ins Leben gerufen wurde. Im Jahre 2000 kam MySQL unter einemDual-License-Modell heraus, das der Öffentlichkeit eine kostenlose Nutzung unter derGNU Public License (GPL) ermöglichte. Das steigerte seine Popularität beträchtlich.MySQL gehört dem Unternehmen MySQL AB (AB steht für aktiebolag, Aktiengesellschaft)und wird von diesem auch weiterentwickelt. Nach Schätzungen von MySQL AB ist MySQLzurzeit weltweit mehr als 4 Millionen Mal installiert. Die MySQL-Installations-Softwarewird von der eigenen Website der MySQL AB und von Spiegeln täglich durchschnittlich35.000-mal heruntergeladen. Der Erfolg von MySQL als führender Datenbanksoftware liegtnicht nur an seinem Preis (schließlich stehen auch andere relationale Datenbanken als OpenSource und kostenlos zur Verfügung), sondern auch an seiner Zuverlässigkeit, seiner Perfor-mance und seinem Reichtum an Funktionen.

Der Wert von MySQLViele Features tragen zu dem Ruf von MySQL bei, ein fantastisches Datenbanksystem zusein. Eines seiner hervorstechendsten Merkmale ist seine Schnelligkeit. In einem Vergleichs-test mehrerer Datenbanken in eWEEK, bei dem MySQL, Oracle, MS SQL, IBM DB2 undSybase ASE verglichen wurden, lieferten MySQL und Oracle die beste Performance undSkalierbarkeit (weitere Einzelheiten unter http://www.mysql.com/it-resources/benchmarks).Für eine Datenbank, die von vielen Benutzern lange Zeit unbeachtet blieb, ist MySQLbemerkenswert gut skalierbar. Es kann zehntausende von Tabellen und Milliarden vonDatenzeilen bewältigen und verarbeitet kleinere Datenmengen schnell und reibungslos.

Das Speichermodul, das Abfragen managt und die Schnittstelle zwischen den SQL-Befehlender Benutzer und dem Datenbank-Backend bildet, ist bei jedem Datenbank-Management-system die zentrale Software. MySQL stellt mehrere Speichermodule (auch Tabellentypengenannt) mit unterschiedlichen Vorteilen zur Verfügung. Manche sind transaktionssicherund ermöglichen ein Rollback der Daten. Zusätzlich verfügt MySQL über eine ungeheureMenge an eingebauten Funktionen, die in mehreren Kapiteln dieses Buchs genauer beschrie-ben werden.

Page 14: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

2 | Kapitel 1: Einführung in MySQL

LinksMySQL ist auch für schnelle und stabile Verbesserungen bekannt. Immer wenn Sie dieWebsite von MySQL AB besuchen, um MySQL herunterzuladen, finden Sie ein stabiles,gründlich getestetes Release sowie auch eine Distribution vor, die zwar bereits getestet ist,aber Komponenten enthält, die noch nicht so gründlich überprüft worden sind wie die derStandardversion. Diese Version enthält alles, was zu der jüngsten Standardversion gehört,und darüber hinaus die neuen Features, die letzten Endes in eine aktualisierte Standardver-sion einfließen werden. Jedes neue Release bietet nicht nur neue Features, sondern auch einPlus an Geschwindigkeit und Stabilität.

Das MySQL-PackageZum MySQL-Package gehören mehrere Programme: zuallererst der MySQL-Server in Formdes Daemons mysqld. Der Daemon lauscht auf einem bestimmten Port (per Voreinstellung3306) auf Requests, mit denen Clients Abfragen übermitteln. Das normale MySQL-Client-Programm heißt einfach mysql. Mit diesem textbasierten Interface kann sich ein Benutzereinloggen und SQL-Abfragen ausführen. Dieser Client kann auch Abfragen aus Textdateienentgegennehmen und diese somit für den Benutzer oder für eine andere Software ausführen.Allerdings wird MySQL in der Regel von Programmen verwendet, die verschiedene Spra-chen sprechen: Die Schnittstellen für Perl, PHP und C werden im Verlauf dieses Buchs nochvorgestellt.

Auch einige Wrapper-Skripten für mysqld sind in MySQL enthalten. Am häufigsten wirdmysqld mit dem Skript mysqld_safe gestartet, da dieses den Daemon bei einem Absturz wie-der hochfahren kann. Das gewährleistet minimale Ausfallzeiten für die Datenbankdienste.Mit dem Skript mysqld_multi können mehrere Sessions von mysqld_safe und somit auchmehrere mysqld-Instanzen gestartet werden, um Requests von verschiedenen Ports und ver-schiedenen Unix-Socket-Dateien zu handhaben. Außerdem lassen sich damit auch unter-schiedliche Datenbank-Mengen bedienen. Für MS Windows NT- und 2000-Server gibt esdas Skript mysqld-nt. Es unterstützt die Named Pipes, die manche Windows-Systeme an-stelle von Socket-Dateien verwenden.

Zu MySQL gehören außerdem mehrere Dienstprogramme für das Management von MySQL-Servern: Mit mysqlaccess legen Sie Benutzerkonten an und stellen Berechtigungen ein, undmit mysqladmin können Sie den MySQL-Server selbst von der Kommandozeile aus verwal-ten, d.h. seinen Status und seine Auslastung überprüfen und ihn herunterfahren. Mitmysqlshow können Sie den Status eines Servers und Informationen über Datenbanken undTabellen in Erfahrung bringen. Für manche dieser Dienstprogramme müssen Sie zuvor aufdem Server Perl oder ActivePerl für Windows installiert haben. Unter http://www.perl.orgkönnen Sie Perl für Nicht-Windows-Systeme herunterladen und installieren und unter http://www.activestate.com/Products/ActivePerl ActivePerl für Windows-Systeme.

MySQL bietet zudem auch Dienstprogramme für den Import und Export von Daten in undaus MySQL-Datenbanken. mysqldump ist das beliebteste Tool für den Export von Datenund Tabellenstrukturen in eine einfache Textdatei, die so genannte dump-Datei. Das kön-nen Sie sich zum Sichern von Daten oder zur manuellen Übertragung von Daten zwischenmehreren Servern zunutze machen. Der mysql-Client kann verwendet werden, um die Datenaus einer dump-Datei wieder in MySQL zurückzuübertragen.

Auch mit mysqlhotcopy können Sie eine Datenbank oder einzelne Tabellen sichern. Esbewahrt die Datenkonsistenz zwischen Tabellen besser als mysqldump, da es die Tabellenautomatisch sperrt. Die entstehenden Backup-Dateien sind gebrauchsfertige Kopien der

Page 15: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Mailinglisten | 3

Einführung in

MySQL

TAB!RechtsDatenbank in dem von MySQL verwendeten Format. Um sie wiederherzustellen, kopierenSie sie einfach in das MySQL-Data Directory.

Um Daten, die in einem gebräuchlichen Datenbankformat exportiert worden waren, auseiner externen Datei wieder in MySQL zu importieren, bietet MySQL das Programmmysqlimport.

MySQL bietet noch weitere Programme, die nicht in das MySQL-Paket eingebunden sindund separat von der MySQL-Website heruntergeladen werden müssen. Dazu gehören seiteiniger Zeit auch GUI-Programme für die Arbeit mit MySQL wie beispielsweise der MySQLAdministrator, der der Steuerung und Administration von MySQL-Servern dient, oder derMySQL Query Browser, ein grafischer SQL-Client für MySQL.

LizenzierungZwar ist MySQL Open Source und kann daher kostenlos benutzt werden, aber dennoch hatdie MySQL AB das Copyright auf den Quellcode. Das Unternehmen bietet ein Dual-Licen-sing-Programm für seine Software: Eine Lizenz ermöglicht unter bestimmten Umständeneine kostenlose Nutzung über die GPL, und die andere ist eine gebührenpflichtige Lizenz fürdie kommerzielle Nutzung. Beide betreffen dieselbe Software, doch unter verschiedenenLizenzen und mit verschiedenen Berechtigungen. Einzelheiten über die GPL finden Sie unterhttp://www.fsf.org/licenses.

MySQL AB gestattet Ihnen die Benutzung der Software unter der GPL, wenn Sie diese Soft-ware nicht oder nur mit Software, die ebenfalls der GPL unterliegt, weiterverteilen. Sie kön-nen die GPL sogar verwenden, wenn Sie MySQL mit selbst entwickelter Software weiterge-ben, immer vorausgesetzt, dass auch diese selbst entwickelte Software der GPL unterliegt.

Wenn Sie jedoch eine Anwendung entwickelt haben, die zum Funktionieren MySQL benö-tigt, und Ihre Software mit MySQL unter einer kostenpflichtigen Lizenz vertreiben möchten,müssen Sie von MySQL AB eine Lizenz für die kommerzielle Nutzung erwerben. Es gibt auchnoch weitere Szenarien, die eine kommerzielle Lizenz erforderlich machen. Unter http://www.mysql.com/company/legal/licensing erfahren Sie genau, wann Sie eine solche erwerben müssen.

MySQL AB hat nicht nur das Copyright an dem Programm MySQL, sondern besitzt auchdie Marke MySQL. Infolgedessen dürfen Sie keine Software verbreiten, die MySQL im Na-men trägt.

MailinglistenWenn Sie mit MySQL Probleme haben, können Sie sich bei der Benutzergemeinde vonMySQL kostenfrei Rat holen. Dazu gibt es mehrere Listserv-E-Mail-Systeme, die von MySQLAB gehostet werden. Es gibt eine Haupt-Mailingliste für MySQL (mysql) und mehrere spezia-lisierte Mailinglisten. Dort kann sich jedermann Hilfe zu bestimmten Themen holen. EineListe behandelt Fragen über die Datenbank-Performance (benchmarks), eine andere Fragenüber die Windows-Versionen von MySQL (win32) und wieder andere Listen Probleme rundum die Java JDBC-Treiber (java) und das Perl DBI-Modul (perl).

Wenn Sie eine vollständige Aufstellung dieser Mailinglisten suchen oder eine oder mehreredavon abonnieren möchten, gehen Sie zu http://lists.mysql.com. Auf dieser Mailinglisten-Website finden Sie Links zum Abonnieren der einzelnen Listen. Wenn Sie auf einen solchen

Page 16: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

4 | Kapitel 1: Einführung in MySQL

LinksLink klicken, erscheint ein ganz einfaches Formular, auf dem Sie Ihre E-Mail-Adresse ange-ben. Manche Abonnenten verwenden gerne eine spezielle E-Mail-Adresse und einen Namenfür ihre Online-Identität. Das wahrt ihre Anonymität und erleichtert das Sortieren derE-Mails. Andere verwenden lieber echte Namen und Kontaktinformationen. Wenn Sie IhreE-Mail-Adresse eingegeben haben, bekommen Sie eine automatische Nachricht zur Bestäti-gung dieser Adresse. Diese E-Mail enthält einen Link zur MySQL-Website mit ein paarParametern, die Ihre Adresse identifizieren. Sobald Sie auf den Link klicken, öffnet sich IhrWebbrowser und bestätigt Ihr Abonnement.

Die Seite, auf der Sie Mailinglisten abonnieren können, enthält auch einen Link, um einAbonnement zu beenden, sowie für jede Liste auch Links zu Archiven früherer Listserv-Nachrichten. Diese Archive können Sie nach Mails anderer Benutzer durchsuchen, die das-selbe Problem hatten wie Sie. Schauen Sie bitte immer in den Archiven nach, bevor Sie eineFrage posten, denn vielleicht wurde Ihr Thema ja schon früher bereits diskutiert. Wenn Sie inden verfügbaren Dokumentationen keine Antwort auf Ihre Frage finden, können Sie sieimmer noch per E-Mail an die entsprechende Mailingliste einreichen, die auf lists.mysql.comverzeichnet ist. Haben Sie zum Beispiel ein Problem mit dem Perl DBI-Modul, das MySQLbetrifft, dann schreiben Sie eine E-Mail an [email protected]. Verwenden Sie dazu bitteden E-Mail-Account, mit dem Sie bei der Liste, an die Sie Ihre Frage schicken, registriert sind.

Bücher und andere PublikationenAußer den Mailinglisten-Archiven, die im letzten Abschnitt erwähnt wurden, gibt es beiMySQL AB umfangreiche Online-Dokumentationen des MySQL-Servers und aller sonstigenSoftware dieser Firma. Die Dokumentationen finden Sie unter http://dev.mysql.com/doc. Siekönnen sie online lesen oder in mehreren Formaten herunterladen (z.B. HTML oder PDF).Außerdem sind sie in gedruckter Form verfügbar, und zwar unter den Titeln MySQL Lan-guage Reference und MySQL Administrator’s Guide, beide von MySQL Press.

Zusätzlich zu dem vorliegenden Buch gibt es von O’Reilly auch noch andere lesenswerteBücher über MySQL. Das wichtigste Buch von O’Reilly zum Thema MySQL ist MySQL –Einsatz und Programmierung (2002) von George Reese, Randy Jay Yarger und Tim King (mitHugh E. Williams). George Reese hat daraus eine kompaktere Version namens MySQL –kurz & gut (2006) kompiliert. Zur Lösung häufiger Probleme aus der Praxis gibt es dasMySQL Kochbuch (2003) von Paul DuBois. Ratschläge für die Optimierung von MySQL undfür administrative Arbeiten wie etwa die Sicherung von Datenbanken finden Sie im O’Reilly-Buch High Performance MySQL (2004) von Jeremy D. Zawodny und Derek J. Balling.

Darüber hinaus verlegt O’Reilly auch mehrere Bücher über die MySQL-APIs. Für die PHP-Entwicklung mit MySQL gibt es Webdatenbank-Applikationen mit PHP und MySQL (2004)von Hugh E. Williams und David Lane. Für die Interaktion von Perl und MySQL sowie ande-ren Datenbanksystemen gibt es Programming the Perl DBI (2000) von Alligator Descartesund Tim Bunce. Für MySQL und Java können Sie die JDBC- und JConnector-Treiber undGeorge Reeses Buch Programmierung mit Perl DBI (2002) gut gebrauchen.

Neben Büchern gibt es auch Websites über MySQL, die ebenfalls kurze Tutorials bieten.Das O’Reilly Network veröffentlicht oft Artikel über MySQL und die APIs für Perl, PHPund Python in seinem Online-Magazin ONLamp.com (http://www.onlamp.com/onlamp/general/mysql.csp). Zufällig habe auch ich dazu einige Artikel über MySQL und verwandteThemen beigesteuert. Außerdem habe ich viele MySQL-Beiträge für meine Kolumne inUnix Review.com geschrieben (http://www.unixreview.com/mysql). MySQL AB hat eben-

Page 17: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Bücher und andere Publikationen | 5

Einführung in

MySQL

TAB!Rechtsfalls einige ausführliche Beiträge zu MySQL veröffentlicht, die Sie auf der Website http://dev.mysql.com/tech-resources/articles finden. Viele dieser Artikel behandeln neue Produkteund Features und sind somit ideal, wenn Sie etwas über die neuesten Releases in Erfahrungbringen möchten, die sich noch im Teststadium befinden. Developer Shed (http://www.devarticles.com/c/b/MySQL) und Web Monkey (http://search.hotwired.com/webmonkey/?query=mysql) sind weitere lehrreiche Ressourcen. Alle diese Online-Veröffentlichungenkönnen auch ohne Abonnement gelesen werden.

Page 18: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

6 | Kapitel 2: Installation von MySQL

FirstLeftKapitel 2

2Installation von MySQL

Der MySQL-Datenbankserver und die Client-Software laufen auf vielen verschiedenenBetriebssystemen, darunter Linux, FreeBSD und viele Unix-Systeme: Sun Solaris, IBM AIX,HP-UX und so weiter. Zudem hat MySQL AB eine Version für Mac OS X, eine für NovellNetWare und gleich mehrere für MS Windows entwickelt. Herunterladen kann man MySQLentweder direkt von der Website von MySQL AB (http://dev.mysql.com/downloads) oder voneiner ihrer Spiegel-Sites (http://dev.mysql.com/downloads/mirrors.html).

Dieses Kapitel erläutert kurz die Installation von MySQL auf Unix, Linux, Mac OS X, Net-Ware und Windows. Bei manchen Betriebssystemen finden Sie zusätzliche Abschnitte für dieverschiedenen Distributionsformate. Nach der Lektüre von nur drei Abschnitten dieses Kapi-tels können Sie MySQL auf jeder Plattform installieren: Lesen Sie den nächsten Abschnitt,»Die Auswahl der Distribution«, und dann den Abschnitt, in dem es um Ihre gewählte Distri-bution geht, und zum Schluss den Abschnitt »Nach der Installation« am Ende des Kapitels.

Die Auswahl der DistributionBevor Sie anfangen, ein Installations-Package herunterzuladen, müssen Sie entscheiden, wel-che Version von MySQL Sie überhaupt installieren möchten. Die beste Wahl ist in der Regeldie neueste stabile Version, die MySQL AB auf seiner Website empfiehlt. Noch jüngere Ver-sionen sind nicht empfehlenswert, es sei denn, Sie benötigen ein bestimmtes brandaktuellesFeature, das es nur in einer ganz neuen Version gibt. Doch auch von älteren Versionen solltenSie die Finger lassen, wenn nicht Ihre Datenbank oder eine API-Anwendung den Einsatz deraktuellen Version verhindert.

Bei der Installation von MySQL haben Sie außerdem die Wahl zwischen einer Quell- undeiner Binärdistribution. Es ist einfacher und auch ratsam, die Binärdistribution zu installieren.Wenn Sie allerdings während der Installation oder beim Kompilieren bestimmte Konfigura-tionen vornehmen möchten, ist die Quelldistribution besser geeignet. Außerdem wählen Siedie Quelldistribution, wenn für Ihre Plattform keine Binärdistribution verfügbar ist.

Page 19: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Unix-Quelldistributionen | 7

Installation von M

ySQLTAB!Rechts

Manche Distributionen gibt es als Standard-, Max- oder Debug-Version. Die Standardversionist für die meisten Benutzer und Entwickler bestens geeignet, da sie gründlich getestet wurde.

Unix-QuelldistributionenDie Installation von MySQL verläuft auf allen Arten von Unix-Betriebssystemen (Linux, SunSolaris, FreeBSD, IBM AIX, HP-UX usw.) im Grunde gleich. Es ist ratsam, MySQL mit einerBinärdistribution zu installieren, doch in manchen Fällen, wie im vorigen Abschnitt erläutert,ist eine Quelldistribution besser. Um eine solche zu installieren, benötigen Sie GNU gunzip,GNU tar, GNU gcc (mindestens Version 2.95.2) und GNU make. Diese Tools werden mitLinux und den meisten Unix-Systemen in der Regel mitgeliefert. Wenn sie bei Ihrem Betriebs-system fehlen, können Sie sie von der Website der GNU Foundation (http://www.gnu.org/)herunterladen.

Wenn Sie die Quelldistributionsdateien für MySQL heruntergeladen haben, geben Sie als rootin dem Verzeichnis, in dem die Quelldateien gespeichert werden sollen, folgende Befehle ein:

groupadd mysqluseradd -g mysql mysqltar xvfz /tmp/mysql-version.tar.gzcd mysql-version

Der erste Befehl erzeugt die Benutzergruppe mysql; der zweite legt den Systembenutzer mysqlan und fügt ihn gleichzeitig der Gruppe mysql hinzu. Der nächste nutzt das tar-Utility (undüber die Option z auch gunzip), um die heruntergeladene Datei mit der Quelldistribution zuentzippen und auszupacken. Das Wort version ersetzen Sie durch die Versionsnummer, dasheißt: Verwenden Sie als zweites Argument des tar-Befehls den tatsächlichen Pfad und Datei-namen der Installationsdatei, die Sie heruntergeladen haben. Der letzte Befehl wechselt in dasVerzeichnis, das durch tar in der vorherigen Zeile angelegt wurde. Dieses Verzeichnis enthältdie Dateien, die zum Konfigurieren von MySQL erforderlich sind.

Das bringt Sie zum nächsten Schritt: der Konfiguration der Quelldateien zur Vorbereitung aufdie Kompilierung der Binärprogramme. Hier können Sie Ihre speziellen Anforderungen an dieKompilierung einbringen. Wenn Sie beispielsweise nicht das Standard-Installationsverzeich-nis für MySQL verwenden möchten, setzen Sie die Option --prefix auf einen Wert, der dasvon Ihnen gewünschte Verzeichnis angibt. Möchten Sie den Pfad der Unix-Socket-Datei ein-stellen, tun Sie das mit --with-unix-socket-path. Ist Ihnen der Standardzeichensatz latin1nicht genehm, verwenden Sie --with-charset. Das folgende Beispiel zeigt, wie man MySQLmit diesen Optionen konfigurieren könnte, bevor die Binärdateien erstellt werden:

./configure --prefix=/usr/local/mysql \ --with-unix-socket-path=/tmp \ --with-charset=latin2

Diesen Befehl können Sie auch auf einer einzigen Zeile ohne Backslashes eingeben.

Es stehen auch noch einige weitere Konfigurationsoptionen zur Verfügung. Eine vollständigeund aktuelle Liste der zulässigen Optionen liefert Ihnen der Befehl:

./configure --help

Schlagen Sie das Kompilieren von MySQL bitte auch in der neuesten Online-Dokumentationnach: http://dev.mysql.com/doc/mysql/en/Compilation_problems.html.

Page 20: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

8 | Kapitel 2: Installation von MySQL

LinksWenn Sie sich entschieden haben, welche Optionen Sie benötigen, können Sie das Skriptconfigure mit diesen Optionen ausführen. Es läuft eine ganze Weile und zeigt dabei Unmen-gen von Informationen an. Diese können Sie ignorieren, wenn das Skript erfolgreich läuft.Kommt es zum Schluss, müssen die Binaries erstellt und MySQL initialisiert werden. Das erle-digen Sie mit folgenden Befehlen:

makemake installcd /usr/local/mysql./scripts/mysql_install_db

Der erste Befehl erstellt die Binärprogramme. Wenn das klappt, müssen Sie die zweite Zeileeingeben, um die Binärprogramme und zugehörigen Dateien in den entsprechenden Verzeich-nissen zu installieren. In der nächsten Zeile wechseln Sie in das Installationsverzeichnis vonMySQL. Wenn Sie MySQL in ein anderes Verzeichnis installiert haben, wechseln Sie in die-ses. Der letzte Befehl ruft ein in der Distribution mitgeliefertes Skript auf, um die anfänglichenBerechtigungen oder Berechtigungstabellen zu generieren.

Jetzt müssen Sie nur noch die Eigentümerschaft an den MySQL-Programmen und Verzeich-nissen neu definieren. Dazu geben Sie Folgendes ein:

chown -R mysql /usr/local/mysqlchgrp -R mysql /usr/local/mysql

Der erste Befehl erklärt den Benutzer mysql und der zweite die Gruppe mysql zum Besitzer derMySQL-Verzeichnisse und -Programme. Die Dateipfade können je nachdem, welche MySQL-Version Sie installiert und welche Pfade Sie konfiguriert haben, von den oben genanntenabweichen.

Nachdem die Programme installiert sind und die Eigentümerschaft an den Dateien richtig ein-gestellt ist, können Sie MySQL starten. Dazu gibt es mehrere Möglichkeiten. Um sicherzustel-len, dass der Daemon nach einem eventuellen Absturz wieder neu gestartet wird, geben Sieauf der Kommandozeile folgenden Befehl ein:

/usr/local/mysql/bin/mysqld_safe &

Das startet den Daemon mysqld_safe, der seinerseits den MySQL-Server mysqld startet. Wennder Daemon mysqld abstürzt, wird er von mysqld_safe neu gestartet. Das Ampersand-Zeichenam Zeilenende weist die Shell an, den Daemon im Hintergrund laufen zu lassen.

Damit MySQL beim Booten gestartet wird, kopieren Sie die Datei mysql.server aus demUnterverzeichnis support-files des Verzeichnisses /usr/local/mysql in das Verzeichnis /etc/init.d.Dazu geben Sie auf der Kommandozeile Folgendes ein:

cp support-files/mysql.server /etc/init.d/mysqlchmod +x /etc/init.d/mysqlchkconfig --add mysql

Die erste Zeile befolgt die Konvention, wonach die Startdatei für den Server in das erste Dae-mon-Verzeichnis namens mysql gelegt wird. Der zweite Befehl macht die Datei ausführbar,und der dritte setzt den Run-Level des Dienstes für das Hoch- und Herunterfahren.

Da MySQL nun installiert ist und läuft, können Sie sich um die Anpassungen kümmern, dienach der Installation auf dem Plan stehen. Diese werden im letzten Abschnitt dieses Kapitelserklärt.

Page 21: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Unix-Binärdistributionen | 9

Installation von M

ySQLTAB!Rechts

Unix-BinärdistributionenMit einer Binärdistribution gelingt die Installation von MySQL leichter als mit einer Quelldis-tribution. Daher wird dieses Verfahren auch empfohlen, wann immer eine Binärdistributionfür Ihr System zur Verfügung steht. Die Dateien werden in einer Archivdatei zusammenge-packt und dann komprimiert, ehe sie zum Download ins Internet gestellt werden. Daherbenötigen Sie die GNU-Programme tar und gunzip, um die Installationsdateien auspacken zukönnen. Diese Tools sind normalerweise bei allen Linux- und den meisten Unix-Systemenintegriert. Wenn Ihr System sie nicht hat, können Sie sie von der Website der GNU Founda-tion (http://www.gnu.org) herunterladen.

Wenn Sie Ihr Installations-Package ausgesucht und heruntergeladen haben, geben Sie als rootauf der Kommandozeile in etwa Folgendes ein, um die Installation von MySQL zu starten:

groupadd mysqluseradd -g mysql mysqlcd /usr/localtar xvfz /tmp/mysql-version.tar.gz

Der erste Befehl erzeugt die Benutzergruppe mysql; der zweite legt den User mysql an und fügtihn gleichzeitig der Gruppe mysql hinzu. Der nächste Befehl wechselt in das Verzeichnis, indas die MySQL-Dateien extrahiert werden, und der letzte Befehl nutzt das tar-Utility (undüber die Option z auch gunzip), um die heruntergeladene Datei mit der Quelldistribution zuentzippen und auszupacken. Das Wort »version« im Namen der Installationsdatei wird durchdie Versionsnummer ersetzt, das heißt: Der tatsächliche Pfad und Dateiname der Installa-tionsdatei, die Sie heruntergeladen haben, wird als zweites Argument des tar-Befehls einge-setzt. Für Sun Solaris-Systeme verwenden Sie bitte gtar anstelle von tar.

Nachdem diese Befehle ausgeführt sind, müssen Sie einen symbolischen Link zu dem Ver-zeichnis herstellen, das von tar in /usr/local angelegt wurde:

ln -s /usr/local/mysql-version /usr/local/mysql

Damit wird /usr/local/mysql als Link zu /usr/local/mysql-version angelegt, wobei mysql-versionder tatsächliche Name des Unterverzeichnisses ist, das tar in /usr/local angelegt hat. Der Linkist notwendig, weil MySQL standardmäßig damit rechnet, dass die Software in /usr/local/mysql liegt und die Daten in /usr/local/mysql/data gespeichert sind.

Jetzt ist MySQL im Wesentlichen installiert. Sie müssen nur noch die anfänglichen Berechti-gungen oder Berechtigungstabellen anlegen und die Eigentümerschaft an den Dateien derMySQL-Programme und -Datendateien übertragen. Dazu geben Sie auf der KommandozeileFolgendes ein:

cd /usr/local/mysql./scripts/mysql_install_dbchown -R mysql /usr/local/mysqlchgrp -R mysql /usr/local/mysql

Der erste Befehl wechselt in das Verzeichnis mit den MySQL-Dateien. Der zweite nutzt einmitgeliefertes Skript, um die Anfangsberechtigungen oder Berechtigungstabellen einzustellen,die aus der mysql-Datenbank mit dem MySQL-root-User bestehen. Der dritte gibt dem mysql-Benutzer die Eigentümerschaft an den MySQL-Verzeichnissen und -Programmen. Der letzteBefehl ändert den Gruppen-Besitzer desselben Verzeichnisses und derselben Dateien in mysql.

Page 22: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

10 | Kapitel 2: Installation von MySQL

LinksNachdem die Programme installiert sind und die Eigentümerschaft an den Dateien richtig ein-gestellt ist, können Sie MySQL starten. Dazu gibt es mehrere Möglichkeiten. Um sicherzustel-len, dass der Daemon nach einem eventuellen Absturz wieder neu gestartet wird, geben Sieauf der Kommandozeile folgenden Befehl ein:

/usr/local/mysql/bin/mysqld_safe &

Das startet den Daemon mysqld_safe, der seinerseits den MySQL-Server mysqld startet. Wennder Daemon mysqld abstürzt, wird er von mysqld_safe erneut gestartet. Das Ampersand-Zei-chen am Zeilenende weist die Shell an, den Daemon im Hintergrund laufen zu lassen.

Damit MySQL beim Booten gestartet wird, kopieren Sie die Datei mysql.server aus demUnterverzeichnis support-files des Verzeichnisses /usr/local/mysql in das Verzeichnis /etc/init.d.Dazu geben Sie auf der Kommandozeile Folgendes ein:

cp support-files/mysql.server /etc/init.d/mysqlchmod +x /etc/init.d/mysqlchkconfig --add mysql

Die erste Zeile befolgt die Konvention, wonach die Startdatei für den Server in das erste Dae-mon-Verzeichnis namens mysql gelegt wird. Der zweite Befehl macht die Datei ausführbar,und der dritte setzt den Run-Level des Dienstes für das Hoch- und Herunterfahren.

Da MySQL nun installiert ist und läuft, können Sie sich um die Anpassungen kümmern, dienach der Installation auf dem Plan stehen. Diese werden im letzten Abschnitt dieses Kapitelserklärt.

Linux RPM-DistributionenWenn Ihr Server mit einer Linux-Version läuft, die Software über das RPM-Package-Formatinstalliert (RPM stand ursprünglich für RedHat Package Manager), dann empfehlen wirIhnen, ein Package anstelle einer Quelldistribution zu verwenden. Die Unterschiede zwischenden RPM-Versionen hängen nicht von der Linux-Distribution ab (beispielsweise SuSE oderMandrake), sondern von dem Linux-Kernel oder dem Typ der Bibliotheken, die auf dem Ser-ver installiert sind. Für jede MySQL-Version gibt es einige RPM-Dateien zum Herunterladen.Die beiden wichtigsten enthalten die Server- und Client-Dateien. Ihr Namensschema istMySQL-server-version.rpm und MySQL-client-version.rpm, wobei version die tatsächlicheVersionsnummer ist. Zusätzlich zu diesen Haupt-Packages sollten Sie jedoch auch noch einigeandere RPM-Dateien installieren, die zu einer Distribution dazugehören. Es gibt eine RPM fürClient-Shared Libraries (MySQL-shared-version.rpm), eine andere für Bibliotheken undC-API-Include-Dateien für bestimmte Clients (MySQL-devel-version.rpm) und wieder eineandere für Benchmarking und andere MySQL-Performance-Tests (MySQL-bench-version.rpm).

Wenn Sie die RPM-Dateien auf Ihren Server heruntergeladen haben, geben Sie in dem Ver-zeichnis, in dem die Dateien liegen, ungefähr Folgendes auf der Kommandozeile ein:

rpm -ivh MySQL-server-version.rpm \ MySQL-client-version.rpm

Wenn auf dem Server bereits eine ältere Version von MySQL installiert ist, bekommen Sieeine entsprechende Fehlermeldung, und die Installation wird abgebrochen. Möchten Sie einevorhandene Installation upgraden, ersetzen Sie die Option i des obigen Beispiels durch eingroßes »U«.

Page 23: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Mac OS X-Distributionen | 11

Installation von M

ySQLTAB!Rechts

Wenn die RPM-Dateien installiert werden, wird der mysqld-Daemon automatisch gestartetoder neu gestartet. Da MySQL nun installiert ist und läuft, können Sie sich um die Anpassun-gen kümmern, die nach der Installation anstehen. Diese werden im letzten Abschnitt diesesKapitels erläutert.

Mac OS X-DistributionenIn neueren Versionen von Mac OS X ist MySQL in der Regel bereits installiert. Falls das beiIhrem System noch nicht der Fall ist oder Sie Ihr MySQL durch die Installation des neuestenReleases upgraden möchten, finden Sie hier die notwendigen Anleitungen.

Seit der Version 10.2 von Mac OS X und der Version 4.0.11 von MySQL stehen für die Instal-lation von MySQL Binär-Package-Dateien (PKG) zur Verfügung. Wenn Ihr Server eine ältereVersion von Mac OS X verwendet, müssen Sie MySQL aus einer Unix-Quell- oder -Binär-distribution installieren, wie es weiter oben in diesem Kapitel bereits beschrieben wurde.

Befindet sich auf Ihrem Server bereits eine ältere Version von MySQL, müssen Sie diesenDienst herunterfahren, ehe Sie die neue Version installieren und ausführen können. Das erle-digen Sie mit der MySQL Manager Application, einem Programm mit einer grafischen Benut-zeroberfläche (GUI). Bei neueren Mac OS X-Versionen wird es standardmäßig installiert. Istes auf Ihrem Server nicht vorhanden, geben Sie bitte auf der Kommandozeile Folgendes ein,um den MySQL-Dienst zu beenden:

mysqladmin -u root shutdown

Wenn MySQL auf Ihrem System noch nicht installiert ist, müssen Sie unter Umständen denSystembenutzer mysql anlegen, ehe Sie MySQL installieren.

Um die MySQL-Package-Datei zu installieren, suchen Sie mit dem Finder die Disk Image-Datei (die Datei .dmg), die Sie heruntergeladen haben, und mounten sie mit einem Dop-pelklick darauf. Dadurch erscheint der Inhalt der Disk Image-Datei. Suchen Sie das PKG-Iconund doppelklicken Sie darauf, um das Installationsprogramm zu starten. Von nun an geleitetSie der Installer durch die Installation. Die Standardeinstellungen sind für die meisten Anwen-der und Entwickler geeignet.

Ist die Installation von MySQL abgeschlossen, starten Sie den Dienst, indem Sie auf der Kom-mandozeile Folgendes eingeben:

sudo /usr/local/mysql/bin/mysqld_safe[Strg-z]bg

Auf der zweiten Zeile drücken Sie bei gehaltener Strg-Taste auf Z. Zum Schluss geben Sie bgein, um den Prozess des Daemons in den Hintergrund zu schicken.

Um MySQL beim Booten zu starten, fügen Sie ein StartupItem hinzu. In der heruntergelade-nen Disk Image-Datei müsste sich ein Icon namens MySQLStartupItem.pkg befinden. WennSie darauf doppelklicken, erzeugt es ein StartupItem für MySQL. Sobald dieses erzeugt ist,geben Sie folgenden Befehl auf der Kommandozeile ein, anstatt den Dienst wie oben beschrie-ben zu starten:

sudo /Library/StartupItems/MySQL/MySQL start

Da MySQL nun installiert ist und läuft, können Sie sich um die Anpassungen kümmern, dienach der Installation anstehen. Diese werden im letzten Abschnitt dieses Kapitels erläutert.

Page 24: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

12 | Kapitel 2: Installation von MySQL

LinksNovell NetWare-DistributionenWenn Ihr Server mit Novell NetWare 6.0 oder höher läuft und auch die notwendigen Novell-Support Packs vorhanden sind, können Sie MySQL darauf installieren. Für die Version 6.0von NetWare muss Support Pack 4 installiert und zusammen mit der aktuellen Version vonLibC aktualisiert worden sein. Für die Version 6.5 von NetWare muss Support Pack 2 instal-liert und zusammen mit der aktuellen Version von LibC aktualisiert worden sein. Die SupportPacks erhalten Sie auf der Website von Novell (http://support.novell.com) und die neueste Ver-sion der LibC unter http://developer.novell.com/ndk/libc.htm. Eine weitere Voraussetzung fürdie Installation von MySQL ist, dass der MySQL-Server und die Daten auf einem NSS-Vo-lume installiert werden müssen.

Befindet sich auf Ihrem Server bereits eine ältere Version von MySQL, müssen Sie diesenDienst herunterfahren, ehe Sie die neue Version installieren und ausführen können. Dazugeben Sie auf der Server-Konsole Folgendes ein:

mysqladmin -u root shutdown

Nun müssen Sie sich beim Server von einem Client aus anmelden, der auf den Ort zugreifenkann, an dem MySQL installiert werden muss (SYS:MYSQL). Entpacken Sie die komprimiertenBinärdateien in diesen Ort. Ist die Zip-Datei fertig ausgepackt, können Sie einen Suchpfad fürdas Verzeichnis einrichten, in dem die MySQL-NLMs gespeichert sind. Dazu geben Sie aufder Server-Konsole Folgendes ein:

SEARCH ADD SYS:MYSQL\BIN

Jetzt ist MySQL im Wesentlichen installiert. Sie müssen nur noch die anfänglichen Berechti-gungen oder Berechtigungstabellen anlegen. Dazu geben Sie auf der Server-Konsole Folgendesein:

.\scripts\mysql_install_db

Das Utility mysql_install_db ist ein mit der Distribution mitgeliefertes Skript, das die anfängli-chen Berechtigungen oder Berechtigungstabellen (also die mysql-Datenbank) anlegt. Wenndies geschehen ist, ist MySQL startbereit. Geben Sie also auf der Server-Konsole Folgendesein:

mysqld_safe

Damit MySQL beim Booten startet, müssen Sie folgende Zeilen in die autoexec.ncf-Datei desServers einfügen:

SEARCH ADD SYS:MYSQL\BINMYSQLD_SAFE --autoclose --skip-external-locking

Die erste Zeile richtet den Suchpfad für MySQL ein, und die zweite startet den mysqld_safe-Daemon beim Hochfahren. Die erste Option in diesem Befehl lässt den Server MySQL auto-matisch schließen, wenn der Server heruntergefahren wird; die zweite Option veranlasst denServer, keine externen Tabellensperren zuzulassen. Externe Sperren können bei der NetWare-Version 6.0 Probleme verursachen. Beide Optionen sind also empfehlenswert.

Da MySQL nun installiert ist und läuft, können Sie sich um die Anpassungen kümmern, dienach der Installation anstehen. Diese werden im letzten Abschnitt dieses Kapitels erläutert.

Page 25: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Windows-Distributionen | 13

Installation von M

ySQLTAB!Rechts

Windows-DistributionenMySQL auf einem Windows-Server zu installieren ist ganz leicht. Sofern MySQL auf IhremServer bereits installiert ist und läuft und Sie lediglich auf eine neuere Version aufrüsten möch-ten, müssen Sie zuerst die vorhandene Version herunterfahren. Bei Server-Versionen von MSWindows (z.B. Windows NT) wird MySQL als Dienst installiert. Wenn es auf Ihrem Serverals Dienst installiert ist, können Sie an einer DOS-Eingabeaufforderung Folgendes eingeben,um den Dienst herunterzufahren und zu entfernen:

mysqld -remove

Wenn MySQL zwar läuft, aber nicht als Dienst, fahren Sie es an einer DOS-Eingabeaufforde-rung mit folgendem Befehl herunter:

mysqladmin -u root shutdown

Auf der Website von MySQL AB finden Sie drei Installations-Packages: ein Windows Essen-tial-Package, ein Standard Windows-Package und ein Standard Windows-Package ohne denInstaller. Das Windows Essential ist das empfohlene Format. Es enthält nur die wichtigstenDateien für die Ausführung von MySQL. Dazu gehören die üblichen Kommandozeilenpro-gramme und die Header-Dateien für die C-API. Das Standard Windows-Package enthältzusätzlich zu diesen wichtigen Dateien auch die Dokumentation, den MySQL Administrator,den Embedded Server, die Benchmark Suite und noch ein paar weitere nützliche Skripten.Das Standard Windows-Package ohne Installer enthält dieselben Binärdateien und zugehöri-gen anderen Dateien für MySQL, aber keinen Installer. Sie müssen die Dateien in das Ver-zeichnis c:\mysql extrahieren und kopieren und dann eine my.ini-Datei in dem Verzeichnisc:\windows anlegen. Die Distribution enthält mehrere Beispiele für unterschiedliche Server-Nutzung.

Das Windows Essential-Package ist eine Datei namens MySQL-version.msi. Auf dem Win-dows-Arbeitsplatz doppelklicken Sie einfach auf das Dateisymbol und schon startet der Win-dows Installer.

Das Standard Windows-Package ist eine komprimierte Datei, aus der Sie die Installations-dateien extrahieren müssen. Dazu benötigen Sie ein Programm wie WinZip (http://www.winzip.com). Mit einem Doppelklick auf die Datei setup.exe starten Sie dann den Installer fürdas Package. Von nun an läuft die Installation genauso ab wie bei den Packages, die denInstaller verwenden.

Sobald Sie den Installer gestartet haben, bietet Ihnen ein Dialogfeld drei Möglichkeiten zurAuswahl: Typical wird empfohlen, installiert aber nicht die C-API-Include-Dateien und dieanderen Client-Bibliotheken. Beim Standard Windows-Package lässt diese Option auch dieInstallation des Embedded Server, der Benchmark Suite und mehrerer anderer Skripten bei-seite. Die Complete-Installation sorgt dafür, dass alles und jedes aus der heruntergeladenenDistribution installiert wird. Mit Custom können Sie aus einer Liste auswählen, welche Pro-gramme und Bibliotheken Sie installieren möchten. Auf demselben Bildschirm befindet sichauch ein Button mit der Aufschrift Change, mit dem Sie das Verzeichnis ändern können, indas MySQL installiert wird. Ältere MySQL-Versionen verwenden als Standard c:\mysql; jün-gere installieren es standardmäßig in Verzeichnissen wie c:\Programme\MySQL\MySQLServer version\, wobei version die Versionsnummer ist.

Nachdem Sie ausgewählt haben, was Sie wo installieren möchten, werden die Dateien instal-liert. Hat der Installer sein Werk getan, wird der MySQL Server Instance Configuration

Page 26: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

14 | Kapitel 2: Installation von MySQL

LinksWizard gestartet, der Konfigurationsassistent für die MySQL-Server-Instanz. Er stellt Ihneneine Reihe von Fragen, um eine Server-Konfigurationsdatei (my.ini) anzulegen, die standard-mäßig unter c:\windows gespeichert wird. Die Fragen beziehen sich darauf, wie Sie denMySQL-Server nutzen möchten, und Ihre Antworten entscheiden über den Inhalt der Konfi-gurationsdatei. Sie können auch den Standard-Speicherort der Datendateien, den verwende-ten TCP/IP-Port und einige andere Einstellungen ändern.

Um die Kommandozeilenprogramme aufrufen zu können, ohne immer den Pfad zu der Dateiangeben zu müssen, die sie enthält, geben Sie auf der Kommandozeile Folgendes ein:

PATH=%PATH%;c:\Programmdateien\MySQL\MySQL Server version\bin

Ersetzen Sie auch hier version durch die Versionsnummer; geben Sie also den Pfad zu derMySQL-Installation ein. Falls Sie bei der Installation von MySQL ein anderes Zielverzeichnisangegeben haben, müssen Sie dieses entsprechend anführen. Ältere Windows-Versionenakzeptieren unter Umständen in der Startdatei keine langen Verzeichnisnamen. Dort müssenSie die obige Zeile eventuell wie folgt abkürzen:

PATH=%PATH%;c:\Program~1\MySQL\MySQLS~1.1\bin

Alles, was auf die ersten sieben Zeichen eines Verzeichnisnamens folgt, wird durch ~1 ersetzt.Leerzeichen, die in den ersten sieben Zeichen eines Verzeichnisnamens vorkommen, werdenjeweils durch ein S ersetzt. Wenn am Ende des Verzeichnisnamens ein Punkt und weitere Zei-chen stehen, werden der letzte Punkt und die nachfolgenden Zeichen angegeben. Ein Ver-zeichnis namens »MySQL Server 4.1« würde also beispielsweise, wie im obigen Befehl, als»MySQLS~1.1« eingegeben. Damit dieser neue Pfad beim Booten zur Verfügung steht,schreiben Sie ihn bitte in die Datei c:\autoexec.bat.

Wenn Sie MySQL fertig installiert und die Konfigurationsdatei eingerichtet haben, startet derInstaller den MySQL-Server automatisch. Haben Sie MySQL manuell ohne Installer instal-liert, müssen Sie an einer DOS-Eingabeaufforderung Folgendes eintippen:

mysqld-nt --installnet start mysql

Nun fehlen nur noch die üblichen Anpassungen nach der Installation, die im folgendenAbschnitt beschrieben werden.

Nach der InstallationWenn Sie mit der Installation von MySQL auf dem Server fertig sind, sollten Sie noch ein paarDinge erledigen, ehe Sie richtig mit der Arbeit beginnen können. Um den Server richtig zukonfigurieren, sind einige Änderungen an der Konfigurationsdatei erforderlich. Ändern Siemindestens das root-Passwort und fügen Sie einige Benutzer hinzu, die keine Administratorensind. MySQL ist anfänglich mit anonymen Usern ausgestattet; löschen Sie diese. Welche Auf-gaben zu erledigen sind, wird im Folgenden kurz erklärt.

Auch wenn die MySQL-Entwickler den Server-Daemon auf die empfohlene Konfigurationeingestellt haben, sollten Sie ein paar Dinge ändern, beispielsweise das Fehler-Logging ein-schalten. Dazu müssen Sie die Haupt-Konfigurationsdatei für MySQL bearbeiten. Auf Unix-Systemen ist das die Datei /etc/my.cnf, unter Windows entweder c:\windows\my.ini oder c:\my.cnf. Die Konfigurationsdatei ist eine einfache Textdatei, die mit einem normalen Text-Editorund nicht mit einem Textverarbeitungssystem bearbeitet werden muss. Sie ist in Abschnitteoder Gruppen gegliedert, die jeweils mit einer in eckigen Klammern stehenden Überschrift

Page 27: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

Nach der Installation | 15

Installation von M

ySQLTAB!Rechts

eingeleitet werden. So finden Sie beispielsweise die Einstellungen für den Server-Daemonmysqld unter der Gruppenüberschrift [mysqld]. Dort können Sie so etwas wie log = /var/log/mysql einfügen, um das Logging einzuschalten und das Verzeichnis für die Logdateien auf dasangegebene Verzeichnis einzustellen. Sie können viele Optionen in der Datei für eine konkreteGruppe einstellen. Eine vollständige Liste mit Erläuterungen dieser Optionen finden Sie inKapitel 10.

Das Passwort für den root-User können Sie in MySQL auf mehrere Arten ändern. Ein einfa-cher Weg besteht darin, sich bei MySQL über den mysql-Client anzumelden, indem man aufder Kommandozeile Folgendes eingibt:

mysql -u root -p

Unter Windows müssen Sie vor diese Zeile eventuell den Pfad c:\mysql\bin\ setzen, sofern Sieihn nicht bereits dem Befehlspfad hinzugefügt haben. Nachdem Sie diesen Befehl richtig ein-gegeben haben, werden Sie zur Eingabe des root-User-Passworts aufgefordert. Dabei handeltes sich nicht um den root-User des Betriebssystems, sondern um den root-User von MySQL.Da am Anfang gar kein Passwort vorhanden ist, drücken Sie einfach auf Enter und lassen esleer. Wenn alles richtig installiert ist und der mysqld-Daemon läuft, müsste ein Prompt wiedieser erscheinen:

mysql>

Das ist der Prompt für die mysql-Client-Schnittstelle oder den MySQL-Monitor. Nun ändernSie das Passwort für root wie folgt:

SET PASSWORD FOR root@localhost=PASSWORD('password'); SET PASSWORD FOR root@host=PASSWORD('password');

Ersetzen Sie bitte das in Anführungszeichen stehende password durch ein root-Passwort IhrerWahl. Sie sehen hier zwei Zeilen, da es in der Regel zwei Einträge für den root-User gibt: einenauf dem Localhost und einen anderen mit dem Hostnamen des Systems. Bei Windows wirdanstelle dieses zweiten Accounts das Wildcard-Zeichen % verwendet, damit root sich vonjedem beliebigen Host aus einloggen kann. Nachdem Sie diese Passwörter geändert haben,müssen Sie sich beim mysql-Client ab- und dann mit dem neuen Passwort wieder anmelden.

Die nächste Sicherheitsmaßnahme besteht darin, die anonymen User zu löschen. Dazu gebenSie im mysql-Client Folgendes ein:

DELETE FROM mysql.user WHERE User='';DELETE FROM mysql.db WHERE User='';FLUSH PRIVILEGES;

Die ersten beiden Befehle löschen die anonymen User aus den Tabellen user und db in derDatenbank namens mysql. Dort werden die Berechtigungen oder Berechtigungstabellengespeichert. Die letzte Zeile setzt die Server-Berechtigungen so zurück, dass diese Änderungenwirksam werden.

Als nächsten Schritt richten Sie mindestens einen Benutzer zum allgemeinen Gebrauch ein. Esist besser, allgemeine Datenbankmanagement-Aufgaben nicht immer als root auszuführen.Wenn Sie einen neuen Benutzer einrichten, müssen Sie überlegen, welche Berechtigungen Sieihm geben möchten. Soll er nur Daten lesen können, müssen Sie im mysql-Client ungefährFolgendes eingeben:

GRANT SELECT ON *.* TO tina IDENTIFIED BY 'muller';

Page 28: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

16 | Kapitel 2: Installation von MySQL

LinksIn dieser Zeile heißt die Benutzerin tina und ihr Passwort lautet muller. Wenn Sie ihr mehr alsnur Leseberechtigungen geben möchten, müssen Sie zu dem SELECT-Befehl zusätzliche Rechtehinzufügen, und zwar immer mit Kommata dazwischen. Um einem Benutzer gleich alleRechte auf einmal zu verleihen, ersetzen Sie SELECT durch ALL, wie im folgenden Beispiel zusehen:

GRANT ALL ON db1.* TO tina IDENTIFIED BY 'muller';

In diesem Beispiel bekommt die Benutzerin tina alle Rechte, allerdings nur für die Datenbankdb1. Gleichzeitig fügt die Anweisung tina in die user-Tabelle der mysql-Datenbank ein, fallsbereits eine Zeile für sie vorhanden ist, allerdings ohne Berechtigungen. Außerdem wird in diedb-Tabelle der mysql-Datenbank eine Zeile geschrieben, die festhält, dass tina alle Berechti-gungen für die Datenbank db1 bekommen hat. Eine Erklärung des GRANT-Befehls und seinerweiteren Optionen finden Sie in Kapitel 4.

Wenn Sie MySQL-Datendateien von einem anderen System besitzen, können Sie dieseDateien in das Verzeichnis kopieren, in dem die MySQL-Daten auf Ihrem Server gespeichertsind. Sie müssen nur daran denken, mit dem Systembefehl chown den Benutzer mysql und dieGruppe mysql zum Besitzer dieser Dateien zu erklären, nachdem Sie sie in das passende Ver-zeichnis kopiert haben. Wenn Ihre vorhandenen Datendateien Dumpfiles sind, die von demDienstprogramm mysqldump angelegt wurden, schlagen Sie bitte in Kapitel 12 die Erklärun-gen zu diesem Programm nach. Müssen Ihre Daten aus einer Textdatei konvertiert werden,schauen Sie in die Erklärungen zu der Anweisung LOAD DATA INFILE in Kapitel 4. Außerdemsollten Sie immer einen Blick in die Online-Dokumentation für Upgrades von früheren Ver-sionen werfen (http://dev.mysql.com/doc/mysql/en/Upgrade.html), insbesondere wenn Sie eineMigration über Hauptversionen vornehmen.

Wenn die MySQL-Installationssoftware heruntergeladen und installiert ist und alle Binär-dateien und Daten am richtigen Platz und richtig konfiguriert sind, ist MySQL jetzt ge-brauchsfertig.

Page 29: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

| 17

FirstKapitel 3

3Grundlagen von MySQL

Während der Hauptteil von MySQL in a Nutshell eine Referenz ist, in der Sie jeweils nachBedarf nur einzelne Einträge nachlesen, ist das vorliegende Kapitel eine Einführung in dieGrundlagen von MySQL. Es erklärt, wie Sie sich beim MySQL-Server anmelden, Datenban-ken anlegen und Daten darin speichern und bearbeiten können. Dieses Tutorial behandeltMySQL jedoch nicht in epischer Breite, sondern ist eher eine Art Sampler, der Ihnen Mög-lichkeiten aufzeigt und Denkanstöße gibt, wie man mit MySQL arbeitet.

Der mysql-ClientEs gibt diverse Möglichkeiten für die Interaktion mit dem MySQL-Server, also für die Ent-wicklung von und den Umgang mit einer Datenbank. Doch die einfachste Schnittstelle, dieSie dafür benutzen können, ist der mysql-Client. Mit ihm können Sie den Server entwedervon der Kommandozeile oder von einem so genannten Monitor aus bedienen.

Wenn Sie MySQL korrekt installiert haben, müsste mysql eigentlich bereits betriebsbereitsein. Wenn nicht, schlagen Sie bitte noch einmal in Kapitel 2 nach. Haben Sie sich an dieStandardinstallation gehalten, finden Sie das Programm mysql in /usr/local/mysql/bin/mysql.Auf Unix-Systemen sorgen Sie durch die Eingabe des folgenden Befehls dafür, dass mysql inIhrem Pfad liegt:

PATH=$PATH:/usr/local/mysql/binexport PATH

Wenn alles funktioniert, benötigen Sie außerdem einen MySQL-Benutzernamen und einentsprechendes Passwort. Sind Sie nicht selbst der Administrator, müssen Sie sich diesevon einem Administrator beschaffen. Wenn MySQL gerade erst installiert worden ist unddas root-Passwort noch nicht eingerichtet ist, dann ist es leer. In Kapitel 2 wird erklärt, wieSie Passwörter einrichten und neue Benutzer anlegen und mit Berechtigungen ausstattenkönnen.

An einem Shell-Prompt loggen Sie sich folgendermaßen in MySQL ein:

mysql -h host -u user -p

Page 30: MYSQL · 2013-07-23 · MySQL ist das beliebteste Open Source-Datenbanksystem auf dem Markt. Obwohl es kos-tenlos zu haben ist, ist es dennoch verlässl ich und schnell und wird zunehmend

18 | Kapitel 3: Grundlagen von MySQL

LinksWenn Sie sich lokal auf dem Server selbst einloggen, sei es physikalisch oder remote mit Tel-net oder SSH Secure Shell, können Sie das Argument -h host weglassen. Dann wird automa-tisch localhost angesprochen, das heißt der aktuelle Host, auf dem Sie sich befinden. In ande-ren Fällen, also immer dann, wenn Sie Ihre Befehle erst durch ein Netzwerk schicken müssen,ehe sie den Server erreichen, ersetzen Sie das Argument host entweder durch einen Host-namen, der sich in eine IP-Adresse übersetzen lässt, oder durch die tatsächliche IP-Adressedes MySQL-Servers.

Für das Argument user setzen Sie Ihren Benutzernamen ein. Die Option -p veranlasst mysql,Sie nach einem Passwort zu fragen. Dieses können Sie am Ende der Option -p anfügen (z.B.-prover, wenn das Passwort rover lautet); es liegt also kein Leerzeichen zwischen -p und demPasswort. Allerdings ist es nicht besonders sicher, ein Passwort gleich auf der Kommando-zeile einzugeben, denn dann wird es auf dem Bildschirm angezeigt und als lesbarer Textdurch das Netzwerk geschickt. Jeder, der sich eine Liste der Prozesse besorgt, die gerade aufdem Rechner ablaufen, kann Ihr Passwort sehen.

Um mysql zu verlassen, geben Sie quit oder exit ein und drücken auf Enter.

Datenbank und Tabellen anlegenImmer vorausgesetzt, dass Sie alle erforderlichen Berechtigungen haben, um Datenbanken aufdem Server anlegen und modifizieren zu können, werden Sie nun erfahren, wie man Daten-banken und Tabellen anlegt. Für die Beispiele dieses Kapitels erstellen wir eine Datenbank füreine fiktive Buchhandlung:

CREATE DATABASE bookstore;

Mit dieser kurzen SQL-Anweisung haben wir eine Datenbank namens bookstore angelegt.Vielleicht ist Ihnen aufgefallen, dass die Befehle oder reservierten Wörter in Großbuchsta-ben stehen. Das ist nicht unbedingt erforderlich; MySQL unterscheidet bei reserviertenWörtern für SQL-Anweisungen und -Klauseln eigentlich nicht zwischen Groß- und Klein-schreibung. In Datenbank- und Tabellennamen ist die Groß- und Kleinschreibung nur vonBelang, wenn sie vom Betriebssystem auch erkannt wird (zum Beispiel von Unix), abernicht, wenn das Betriebssystem keinen Unterschied erkennt (zum Beispiel Windows). Den-noch entspricht es generell der Konvention, reservierte Wörter in jeglicher SQL-Dokumen-tation in Großbuchstaben und die Namen von Datenbanken, Tabellen und Spalten in Klein-buchstaben zu schreiben.

Vielleicht haben Sie auch bemerkt, dass diese SQL-Anweisung mit einem Semikolon endet.Eine SQL-Anweisung kann sich über mehrere Zeilen hinziehen, doch erst wenn ein Semiko-lon auftaucht, sendet der Client sie zum Lesen und zur Weiterverarbeitung an den Server.Um eine einmal begonnene SQL-Anweisung zu stoppen, geben Sie anstelle des Semikolonsein \c ein.

Nachdem die Datenbank angelegt ist, können wir sie für unsere Session zur Default-Daten-bank erklären:

USE bookstore;

Als Nächstes legen wir die erste Tabelle an, in die wir später Daten laden werden. Wir be-ginnen mit einer Tabelle mit Basisinformationen über Bücher, da diese ja schließlich derKern einer Buchhandlung sind: