MYSQL - Das offizielle Handbuch

  • Published on
    08-Dec-2016

  • View
    250

  • Download
    13

Embed Size (px)

Transcript

  • MySQLDas offizielle Handbuch

  • MySQLDas offizielle Handbuch

    bersetzung von Stefan Hinz

  • Die Deutsche Bibliothek CIP-Einheitsaufnahme

    Ein Titeldatensatz fr diese Publikation ist bei Der Deutschen Bibliothek erhltlich.

    ISBN 3-8266-0888-71. Auflage 2002

    Alle Rechte, auch die der bersetzung, vorbehalten. Kein Teil des Werkes darf in irgendeiner Form(Druck, Fotokopie, Mikrofilm oder einem anderen Verfahren) ohne schriftliche Genehmigung desVerlages reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfltigtoder verbreitet werden. Der Verlag bernimmt keine Gewhr fr die Funktion einzelnerProgramme oder von Teilen derselben. Insbesondere bernimmt er keinerlei Haftung fr eventu-elle, aus dem Gebrauch resultierende Folgeschden.

    Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werkberechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen imSinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wren und dahervon jedermann benutzt werden drften.

    Original English language edition text and art copyright Copyright 1997-2002 MySQL AB

    Printed in Germany

    Lektorat: Volker BombienHerstellung: Michle Albers

    Satz und Layout: G&U e.Publishing Services GmbH, Flensburg Druck: Media-Print, Paderborn

  • Inhaltsverzeichnis

    Vorwort 17

    Kapitel5Vorbemerkungen zum deutschen Handbuch 19Konventionen in diesem Handbuch 20

    1: Was ist MySQL? 23Die wichtigsten Features von MySQL 24Wie stabil ist MySQL? 26Wie gro knnen MySQL-Tabellen sein? 29Jahr-2000-Konformitt 29

    Was ist MySQL AB? 31Geschftsmodell und Dienstleistungen von MySQL AB 32

    MySQL-Support und Lizensierung 34Support, den MySQL AB anbietet 35Copyrights und Lizenzen, die von MySQL verwendet werden 35MySQL-AB-Logos und -Schutzmarken 36MySQL-Lizenzpolitik 37

    MySQL 4.0 kurz und bndig 38Schritt fr Schritt 39Fr den sofortigen Entwicklungseinsatz 39Eingebettetes MySQL 39Weitere ab MySQL 4.0.0 verfgbare Features 39Zuknftige Features in MySQL 4.0 40MySQL 4.1, das folgende Entwicklungs-Release 40

    MySQL-Informationsquellen 41MySQL-Portale 41MySQL-Mailing-Listen 41

    Wie Standard-kompatibel ist MySQL? 48An welche Standards hlt sich MySQL? 48MySQL im ANSI-Modus laufen lassen 48MySQL-Erweiterungen zu ANSI SQL92 49MySQL-Unterschiede im Vergleich zu ANSI SQL92 51Bekannte Fehler und Design-Unzulnglichkeiten in MySQL 57

  • Inhaltsverzeichnis

    6

    MySQL und die Zukunft 60Dinge, die in Version 4.0 enthalten sein sollten 60Dinge, die in naher Zukunft erledigt werden mssen 61Dinge, die irgendwann gemacht werden mssen 64Ein paar Dinge, fr deren Umsetzung wir keine Plne haben 66

    MySQL im Vergleich mit anderen Datenbanken 66MySQL im Vergleich mit mSQL 66MySQL im Vergleich mit PostgreSQL 72

    Kapitel 2: Installation von MySQL 81Schnelle Standard-Installation von MySQL 81

    MySQL auf Linux installieren 81Installation von MySQL unter Windows 82Betriebssysteme, die von MySQL untersttzt werden 84Welche MySQL-Version Sie benutzen sollten 85Installationslayouts 88Wann und wie Updates verffentlicht werden 89MySQL-Binrdistributionen, die von MySQL AB kompiliert wurden 89

    Installation der Quelldistribution 91Schnellinstallation: berblick 91Wie man Patches anwendet 94Typische configure-Optionen 94Installation vom Entwicklungs-Source-Tree 97Probleme beim Kompilieren? 98Anmerkungen zu MIT-pThreads 101Windows-Quelldistribution 102MySQL bauen 102

    Einstellungen und Tests nach der Installation 103Probleme mit mysql_install_db 106Probleme mit dem Start des MySQL-Servers 108MySQL automatisch starten und anhalten 110

    MySQL aktualisieren (Upgrade / Downgrade) 111Upgrade von 3.23 auf Version 4.0 111Upgrade von einer Version 3.22 auf 3.23 112Upgrade von Version 3.21 auf Version 3.22 113Upgrade von Version 3.20 auf Version 3.21 113Upgrade auf eine andere Architektur 114

    Betriebssystem-spezifische Anmerkungen 115Linux (alle Linux-Versionen) 115Anmerkungen zu Windows 122Anmerkungen zu Solaris 129Anmerkungen zu BSD 133Anmerkungen zu Mac OS X 135Anmerkungen zu anderen Unixen 136Anmerkungen zu OS/2 146Anmerkungen zu BeOS 147Anmerkungen zu Novell Netware 147

  • Inhaltsverzeichnis

    Anmerkungen zur Perl-Installation 147Installation von Perl unter Unix 147Installation von ActiveState-Perl unter Windows 148Installation der MySQL-Perl-Distribution unter Windows 149Probleme bei der Benutzung von Perl DBI/DBD-Schnittstelle 149

    Kapitel 3: Einfhrung in MySQL: Ein MySQL-Tutorial 151

    Kapitel7

    Verbindung zum Server herstellen und trennen 151Anfragen eingeben 152Eine Datenbank erzeugen und benutzen 156

    Eine Datenbank erzeugen und auswhlen 157Eine Tabelle erzeugen 158Daten in Tabellen einladen 159Informationen aus einer Tabelle abfragen 160

    Informationen ber Datenbanken und Tabellen 178Beispiele gebruchlicher Anfragen (Queries) 179

    Der hchste Wert einer Spalte 180Die Zeile, die den hchsten Wert einer bestimmten Spalte enthlt 180Hchster Wert einer Spalte pro Gruppe 181Die Zeilen, die das gruppenweise Maximum eines bestimmten Felds enthalten 181Wie Benutzer-Variablen verwendet werden 182Wie Fremdschlssel (Foreign Keys) verwendet werden 183ber zwei Schlssel suchen 185Besuche pro Tag berechnen 185

    mysql im Stapelbetrieb (Batch Mode) 186Anfragen aus dem Zwillings-Projekt 187

    Alle nicht verteilten Zwillinge finden 188Eine Tabelle ber den Zustand von Zwillingspaaren zeigen 191

    MySQL mit Apache benutzen 191

    4: MySQL-Datenbankadministration 193MySQL konfigurieren 193

    mysqld-Kommandozeilenoptionen 193my.cnf-Optionsdateien 198Viele Server auf derselben Maschine installieren 201Viele MySQL-Server auf derselben Maschine laufen lassen 202

    Allgemeine Sicherheitsthemen und das MySQL-Zugriffsberechtigungssystem 203

    Allgemeine Sicherheitsrichtlinien 203Wie Sie MySQL gegen Cracker sicher machen 206Startoptionen fr mysqld in Bezug auf Sicherheit 207Was das Berechtigungssystem macht 208Wie das Berechtigungssystem funktioniert 208Von MySQL zur Verfgung gestellte Berechtigungen 211Verbinden mit dem MySQL-Server 213Zugriffskontrolle, Phase 1: Verbindungsberprfung 214

  • Inhaltsverzeichnis

    8

    Zugriffskontrolle, Phase 2: Anfrageberprfung 217Grnde fr Access denied-Fehler 219

    MySQL-Benutzerkonten-Verwaltung 223GRANT- und REVOKE-Syntax 223MySQL-Benutzernamen und -Passwrter 228Wann Berechtigungsnderungen wirksam werden 229Einrichtung der anfnglichen MySQL-Berechtigungen 229Neue MySQL-Benutzer hinzufgen 230

    Passwrter einrichten 233Wie Sie Ihre Passwrter sicher halten 234

    Disaster-Management und Wiederherstellung 235Datenbank-Datensicherungen 235BACKUP TABLE-Syntax 236RESTORE TABLE-Syntax 237CHECK TABLE-Syntax 237REPAIR TABLE-Syntax 239Benutzung von myisamchk fr Tabellenwartung und Absturzreparatur 239Wartungsplan fr Tabellen erstellen 250Informationen ber eine Tabelle erhalten 250

    Datenbankverwaltung: Sprachreferenz 257OPTIMIZE TABLE-Syntax 257ANALYZE TABLE-Syntax 258FLUSH-Syntax 258KILL-Syntax 259SHOW-Syntax 259

    MySQL-Lokalisierung und internationaler Gebrauch 276Der fr Daten und Sortieren benutzte Zeichensatz 276Nicht-englische Fehlermeldungen 278Einen neuen Zeichensatz hinzufgen 278Die Zeichen-Definitions-Arrays 279Untersttzung fr Zeichenketten-Vergleich 280Untersttzung fr Multi-Byte-Zeichen 280Probleme mit Zeichenstzen 280

    Serverseitige Skripte und Dienstprogramme fr MySQL 281berblick ber serverseitige Programme und Dienstprogramme 281safe_mysqld, der Wrapper um mysqld 283mysqld_multi, Programm zur Verwaltung mehrerer MySQL-Server 285myisampack, MySQL-Programm zum Erzeugen komprimierter Nur-Lese-Tabellen 288mysqld-max, ein erweiterter mysqld-Server 295

    Clientseitige Skripte und Hilfsprogramme von MySQL 297berblick ber die clientseitigen Skripte und Dienstprogramme 297Das Kommandozeilen-Werkzeug 299mysqladmin, Verwaltung eines MySQL-Servers 305Benutzung von mysqlcheck fr Tabellenwartung und Wiederherstellung nach Abstrzen 307mysqldump, Tabellenstrukturen und -daten dumpen 309

  • Inhaltsverzeichnis

    mysqlhotcopy, MySQL-Datenbanken und Tabellen kopieren 313mysqlimport, Daten aus Textdateien importieren 315Datenbanken, Tabellen und Spalten anzeigen 317perror, Erklrung der Fehler-Codes 318Wie SQL-Befehle aus einer Textdatei laufen gelassen werden 318

    Die MySQL-Log-Dateien 318Die Fehler-Log-Datei 319Die allgemeine Anfragen-Log-Datei 319

    Kapitel9

    Die Update-Log-Datei 319Die binre Update-Log-Datei 320Die Anfragen-Log-Datei fr langsame Anfragen 321Wartung und Pflege der Log-Dateien 322

    Replikation bei MySQL 322Einfhrung in die Replikation 322Replikationsimplementation 323Wie man Replikation aufsetzt 323Replikationsfeatures und bekannte Probleme 325Replikationsoptionen in my.cnf 326SQL-Befehle in Bezug auf Replikation 329Replikation Hufig gestellte Fragen 330Problemlsung bei Replikation 333

    5: MySQL-Optimierung 335berblick ber Optimierung 335

    MySQL-Design-Einschrnkungen 336Portabilitt 336Wofr benutzen wir MySQL? 337Die MySQL-Benchmark-Suite 338Wie Sie Ihre eigenen Benchmarks benutzen 339

    SELECTs und andere Anfragen optimieren 339EXPLAIN-Syntax (Informationen ber ein SELECT erhalten) 340Anfragen-Performance abschtzen 346Geschwindigkeit von SELECT-Anfragen 346Wie MySQL WHERE-Klauseln optimiert 346Wie MySQL DISTINCT optimiert 348Wie MySQL LEFT JOIN optimiert 349Wie MySQL LIMIT optimiert 349Geschwindigkeit von INSERT-Anfragen 350Geschwindigkeit von UPDATE-Anfragen 351Geschwindigkeit von DELETE-Anfragen 352Weitere Optimierungstipps 352

    Sperren (Locking) 354Wie MySQL Tabellen sperrt 354Themen, die Tabellensperren betreffen 355

    Optimierung der Datenbank-Struktur 356MySQL-Datenbank-Design-berlegungen 356

  • Inhaltsverzeichnis

    10

    Wie Sie Ihre Daten so klein wie mglich bekommen 357Wie MySQL Indexe benutzt 358Spalten-Indexe 360Mehrspaltige Indexe 360Wie MySQL Tabellen ffnet und schliet 361Nachteile der Erzeugung groer Mengen von Tabellen in der selben Datenbank 362Warum gibt es so viele offene Tabellen? 362

    Optimierung des MySQL-Servers 363

    KapitelSystem / Kompilierzeitpunkt und Tuning der Startparameter 363Server-Parameter tunen 363Wie Kompilieren und Linken die Geschwindigkeit von MySQL beeinflusst 365Wie MySQL Speicher benutzt 366Wie MySQL DNS benutzt 368SET-Syntax 368Festplatte, Anmerkungen 371Symbolische Links benutzen 372

    6: MySQL-Sprachreferenz 375Sprachstruktur 375

    Literale: Wie Zeichenketten und Zahlen geschrieben werden 375Datenbank-, Tabellen-, Index-, Spalten- und Alias-Namen 378Gro-/Kleinschreibung in Namen 380Benutzer-Variablen 380Kommentar-Syntax 381Ist MySQL pingelig hinsichtlich reservierter Wrter? 382

    Spaltentypen 384Numerische Typen 388Datums- und Zeit-Typen 389Zeichenketten-Typen 395Den richtigen Typ fr eine Spalte auswhlen 399Spaltentypen anderer Datenbanken benutzen 399Speicherbedarf von Spaltentypen 400

    Funktionen fr die Benutzung in SELECT- und WHERE-Klauseln 401Nicht typenspezifische Operatoren und Funktionen 402Ablaufsteuerungsfunktionen 406Zeichenketten-Funktionen 408Numerische Funktionen 419Datums- und Zeit-Funktionen 427Weitere Funktionen 435Funktionen zur Benutzung bei GROUP BY-Klauseln 440

    Datenmanipulation: SELECT, INSERT, UPDATE, DELETE 442SELECT-Syntax 442UPDATE-Syntax 452DELETE-Syntax 452

  • Inhaltsverzeichnis

    Datendefinition: CREATE, DROP, ALTER 460CREATE DATABASE-Syntax 460DROP DATABASE-Syntax 461CREATE TABLE-Syntax 461ALTER TABLE-Syntax 468RENAME TABLE-Syntax 472DROP TABLE-Syntax 472CREATE INDEX-Syntax 473DROP INDEX-Syntax 473

    Grundlegende Befehle des MySQL-Dienstprogramms fr Benutzer 473

    Kapitel11

    USE-Syntax 473DESCRIBE-Syntax (Informationen ber Spalten erhalten) 474

    Transaktionale und Sperrbefehle von MySQL 474BEGIN/COMMIT/ROLLBACK-Syntax 474LOCK TABLES/UNLOCK TABLES-Syntax 475SET TRANSACTION-Syntax 477

    MySQL-Volltextsuche 477Volltext-Einschrnkungen 479MySQL-Volltextsuche fein einstellen 480Neue Features der Volltextsuche in MySQL 4.0 480Volltextsuche TODO-Liste 481

    MySQL-Anfragen-Cache 481Wie der Anfragen-Cache funktioniert 481Anfragen-Cache-Konfiguration 482Anfragen-Cache-Optionen in SELECT 483Anfragen-Cache-Status und -Wartung 483

    7: MySQL-Tabellentypen 485MyISAM-Tabellen 486

    Fr Schlssel bentigter Speicherplatz 488MyISAM-Tabellenformate 489MyISAM-Tabellenprobleme 491

    MERGE-Tabellen 492MERGE-Tabellenprobleme 494

    ISAM-Tabellen 495HEAP-Tabellen 496InnoDB-Tabellen 497

    berblick ber InnoDB-Tabellen 497Mit InnoDB anfangen Optionen 498InnoDB-Tabellenplatz (Tablespace) erzeugen 501InnoDB-Tabellen erzeugen 502Hinzufgen und Entfernen von InnoDB-Daten- und -Log-Dateien 504Datensicherung und Wiederherstellung einer InnoDB-Datenbank 505Eine InnoDB-Datenbank auf eine andere Maschine verschieben 506

  • Inhaltsverzeichnis

    12

    InnoDB-Transaktionsmodell 507Tipps zur Performance-Steigerung 510Implementation des Multiversionings 514Tabellen- und Index-Strukturen 515Verwaltung von Datei-Speicherplatz und Festplatten-Eingaben / -Ausgaben 517Fehlerbehandlung 518Beschrnkungen von InnoDB-Tabellen 519

    KapitelBDB- oder Berkeley_db-Tabellen 520berblick ber BDB-Tabellen 520BDB installieren 520BDB-Startoptionen 521Kennzeichen von BDB-Tabellen 521Was in naher Zukunft bei BDB in Ordnung gebracht werden muss 523Betriebssysteme, die von BDB untersttzt werden 523Fehler, die bei der Benutzung von BDB-Tabellen auftreten knnen 523

    8: MySQL-APIs 525MySQL-PHP-API 525

    Allgemeine Probleme mit MySQL und PHP 525MySQL-Perl-API 526

    DBI mit DBD::mysql 526Die DBI-Schnittstelle 526Portable DBI-Methoden 527MySQL-spezifische Methoden 532Weitere DBI/DBD-Informationen 533

    MySQL-ODBC-Untersttzung 533Wie Sie MyODBC installieren 534Wie Sie die verschiedenen Felder im ODBC-Administrator Programm ausfllen 535Verbindungsparameter fr MyODBC 535Wie Sie Probleme mit MyODBC berichten 537Programme, die bekanntermaen mit MyODBC zusammenarbeiten 537Wie man den Wert einer AUTO_INCREMENT-Spalte in ODBC erhlt 542Probleme mit MyODBC berichten 542

    MySQL-C-API 543C-API-Datentypen 544C-API-Funktionsberblick 547C-API-Funktionsbeschreibungen 550C-Threaded-Funktionsbeschreibungen 585C-Embedded-Server-Funktionsbeschreibungen 585Hufige Fragen und Probleme bei der Benutzung der C-API 587Client-Programme bauen 589Wie man einen threaded Client herstellt 589libmysqld, die eingebettete MySQL-Server-Bibliothek 590

    MySQL-C++-APIs 598Borland C++ 598

  • Inhaltsverzeichnis

    MySQL Java Connectivity (JDBC) 598MySQL-Python-APIs 598MySQL-Tcl-APIs 598MySQL-Eiffel-Wrapper 598

    Kapitel 9: MySQL erweitern 599

    Anhang13

    Hinzufgen neuer Funktionen zu MySQL 599CREATE FUNCTION / DROP FUNCTION-Syntax 599Hinzufgen einer neuen benutzerdefinierten Funktion 600Hinzufgen einer neuen nativen Funktion 606

    Hinzufgen neuer Prozeduren zu MySQL 607Prozeduranalyse 608Eine Prozedur schreiben 608

    MySQL-Interna 608MySQL-Thread 608MySQL-Test-Suite 609

    A: Wie man feststellt, was Probleme verursacht 613Einige gebruchliche Fehler bei der Benutzun...

Recommended

View more >