Kapitel 2. Installation von MySQL

Inhaltsverzeichnis

2.1. Allgemeines zur Installation
2.1.1. Betriebssysteme, die von MySQL unterstützt werden
2.1.2. Welche MySQL-Version Sie benutzen sollten
2.1.3. Woher man MySQL bekommt
2.1.4. Bestätigen der Paketintegrität mittels MD5-Prüfsummen oder GnuPG
2.1.5. Installationslayouts
2.2. Schnelle Standardinstallation von MySQL
2.3. Installation von MySQL unter Windows
2.3.1. Systemvoraussetzungen für Windows
2.3.2. Auswahl eines Installationspakets
2.3.3. Installation von MySQL mit dem automatischen Installer
2.3.4. Verwendung des MySQL-Installations-Assistenten
2.3.5. Verwendung des Konfigurations-Assistenten
2.3.6. Installation von MySQL aus einem Noinstall-Zip-Archiv
2.3.7. Entpacken des Installationsarchivs
2.3.8. Anlegen einer Optionsdatei
2.3.9. Auswahl des MySQL Server-Typs
2.3.10. Erstmaliges Starten des Servers
2.3.11. Starten von MySQL von der Windows-Befehlszeile
2.3.12. Starten von MySQL als Windows-Dienst
2.3.13. Test der MySQL-Installation
2.3.14. Troubleshooting einer MySQL-Installation unter Windows
2.3.15. Upgrade von MySQL unter Windows
2.3.16. MySQL unter Windows im Vergleich zu MySQL unter Unix
2.4. MySQL unter Linux installieren
2.5. Installation von MySQL unter Mac OS X
2.6. Installation von MySQL unter NetWare
2.7. Installation von MySQL auf anderen Unix-ähnlichen Systemen
2.8. Installation der Quelldistribution
2.8.1. Schnellinstallation, Überblick
2.8.2. Typische configure-Optionen
2.8.3. Installation vom Entwicklungs-Source-Tree
2.8.4. Probleme beim Kompilieren?
2.8.5. Anmerkungen zu MIT-pthreads
2.8.6. Windows-Quelldistribution
2.8.7. MySQL-Clients auf Windows kompilieren
2.9. Einstellungen und Tests nach der Installation
2.9.1. Nach der Installation unter Windows durchzuführende Schritte
2.9.2. Schritte nach der Installation unter Unix
2.9.3. Einrichtung der anfänglichen MySQL-Berechtigungen
2.10. MySQL aktualisieren (Upgrade/Downgrade)
2.10.1. Upgrade von MySQL 5.0
2.10.2. Upgrade auf eine andere Architektur
2.11. Downgrade von MySQL
2.12. Betriebssystemspezifische Anmerkungen
2.12.1. Linux (alle Linux-Versionen)
2.12.2. Anmerkungen zu Mac OS X
2.12.3. Anmerkungen zu Solaris
2.12.4. Anmerkungen zu BSD
2.12.5. Anmerkungen zu anderen Unixen
2.12.6. Anmerkungen zu OS/2
2.13. Anmerkungen zur Perl-Installation
2.13.1. Installation von Perl unter Unix
2.13.2. Installation von ActiveState-Perl unter Windows
2.13.3. Probleme bei der Benutzung der DBI/DBD-Schnittstelle von Perl

Dieses Kapitel beschreibt, wie Sie sich MySQL beschaffen und installieren. Zunächst folgt eine Zusammenfassung der Vorgehensweise; die Details werden dann im weiteren Verlauf beschrieben. Wenn Sie MySQL nicht zum ersten Mal installieren, sondern eine vorhandene MySQL-Version auf eine neuere Version aktualisieren wollen, dann finden Sie weitere Informationen zur Vorgehensweise und zu Gesichtspunkten, die vor dem Upgrade beachtet werden müssen, in Abschnitt 2.10, „MySQL aktualisieren (Upgrade/Downgrade)“.

  1. Ermitteln Sie, ob Ihre Plattform unterstützt wird. Bitte beachten Sie, dass nicht alle unterstützten Systeme gleichermaßen zur Ausführung von MySQL geeignet sind. Auf manchen Plattformen arbeitet MySQL robuster und effizienter als auf anderen. Weitere Informationen finden Sie in Abschnitt 2.1.1, „Betriebssysteme, die von MySQL unterstützt werden“.

  2. Wählen Sie die zu installierende Distribution. Es sind verschiedene MySQL-Versionen verfügbar, die meisten davon in unterschiedlichen Distributionsformaten. Sie können zwischen fertig gepackten Distributionen mit binären (vorkompilierten) Programmen und dem Quellcode wählen. Entscheiden Sie sich im Zweifelsfall für eine binäre Distribution. Für Benutzer, die unsere aktuellsten Entwicklungen sehen und uns beim Testen des neuesten Codes helfen wollen, bieten wir auch einen öffentlichen Zugang zum aktuellen Source-Tree. Wie Sie bestimmen, welche Version und welchen Distributionstyp Sie verwenden sollten, erfahren Sie in Abschnitt 2.1.2, „Welche MySQL-Version Sie benutzen sollten“.

  3. Laden Sie die Distribution herunter, die Sie installieren wollen. Informationen zur Vorgehensweise finden Sie in Abschnitt 2.1.3, „Woher man MySQL bekommt“. Um die Integrität der Distribution zu überprüfen, gehen Sie vor wie in Abschnitt 2.1.4, „Bestätigen der Paketintegrität mittels MD5-Prüfsummen oder GnuPG, beschrieben.

  4. Installieren Sie die Distribution. Um MySQL aus einer binären Distribution zu installieren, gehen Sie vor wie in Abschnitt 2.2, „Schnelle Standardinstallation von MySQL“, beschrieben. Wenn Sie MySQL hingegen aus einer Quelldistribution oder aus dem aktuellen Entwicklungs-Source-Tree installieren, gehen Sie vor wie in Abschnitt 2.8, „Installation der Quelldistribution“, beschrieben.

    Wenn Sie bei der Installation Probleme haben, finden Sie plattformspezifische Hinweise zu deren Beseitigung in Abschnitt 2.12, „Betriebssystemspezifische Anmerkungen“.

  5. Führen Sie die nach der Installation erforderlichen Konfigurationsarbeiten durch. Lesen Sie nach der Installation von MySQL Abschnitt 2.9, „Einstellungen und Tests nach der Installation“. Dieser Abschnitt enthält wichtige Informationen dazu, wie Sie den einwandfreien Betrieb des MySQL Servers sicherstellen. Ferner ist dort beschrieben, wie Sie die bei der Installation erstellten MySQL-Benutzerkonten, die anfangs keine Passwörter aufweisen, bis zur Konfiguration von Passwörtern sichern. Die in diesem Abschnitt enthaltenen Informationen gelten unabhängig davon, ob Sie MySQL mithilfe einer Binär- oder einer Quelldistribution installieren.

  6. Wenn Sie die MySQL-Benchmark-Skripten ausführen wollen, muss der Perl-Support für MySQL eingerichtet sein. Siehe auch Abschnitt 2.13, „Anmerkungen zur Perl-Installation“.

2.1. Allgemeines zur Installation

Vor der Installation von MySQL müssen Sie Folgendes tun:

  1. Ermitteln Sie, ob MySQL auf Ihrer Plattform läuft.

  2. Wählen Sie die zu installierende Distribution aus.

  3. Laden Sie die Distribution herunter und überprüfen Sie die Integrität.

Dieser Abschnitt enthält Informationen, die für die Ausführung dieser Schritte erforderlich sind. Danach können Sie die Anweisungen in den nachfolgenden Abschnitten des Kapitels zur Installation der von Ihnen gewählten Distribution verwenden.

2.1.1. Betriebssysteme, die von MySQL unterstützt werden

Dieser Abschnitt listet die Betriebssysteme auf, auf denen MySQL ausgeführt können werden sollte.

Wir verwenden GNU Autoconf, weswegen eine Portierung von MySQL auf alle modernen Systeme möglich ist, die einen C++-Compiler und eine funktionsfähige Implementierung von POSIX-Threads enthalten. (Die Thread-Unterstützung wird für den Server benötigt. Wenn Sie nur den Clientcode kompilieren wollen, benötigen Sie lediglich den C++-Compiler.) Wir selbst verwenden und entwickeln die Software in erster Linie auf Systemen unter Linux (SuSE und Red Hat), FreeBSD und Sun Solaris (Versionen 8 und 9).

Berichten zufolge lässt sich MySQL erfolgreich auf den nachfolgend aufgeführten Kombinationen aus Betriebssystem und Thread-Paket kompilieren. Beachten Sie, dass die native Thread-Unterstützung bei vielen Betriebssystemen nur in den jeweils aktuellsten Versionen funktioniert.

Nicht alle Plattformen sind für die Ausführung von MySQL gleichermaßen geeignet. Die Eignung einer Plattform für einen unternehmenskritischen, stark beanspruchten MySQL Server wird von den folgenden Faktoren bestimmt:

  • Allgemeine Stabilität der Thread-Bibliothek. Auch auf Plattformen, die ansonsten einen exzellenten Ruf genießen, ist MySQL nur so stabil wie die aufgerufene Thread-Bibliothek – und zwar auch dann, wenn alles andere perfekt ist.

  • Die Funktionalität des Kernels und der Thread-Bibliothek bezüglich der optimalen Nutzung von SMP-Systemen (symmetrischen Multiprozessorsystemen). Mit anderen Worten: Wenn ein Prozess einen Thread erstellt, sollte dieser auf einem anderen Prozessor laufen können als der ursprüngliche Prozess.

  • Die Fähigkeit von Kernel und Thread-Bibliothek, mehrere Threads auszuführen, die häufig ein Mutex für einen kurzen kritischen Bereich ohne umfassende Kontextschalter setzen, und aufzuheben. Wenn die Implementierung von pthread_mutex_lock() zu zurückhaltend bei der Bereitstellung von Prozessorzeit ist, wird MySQL hierdurch empfindlich gestört. Wird dieser Aspekt nicht berücksichtigt, dann macht das Ergänzen zusätzlicher Prozessoren MySQL tatsächlich langsamer.

  • Allgemeine Stabilität und Leistungsfähigkeit des Dateisystems.

  • Wenn Ihre Tabellen sehr groß werden, steht und fällt die Leistung mit der Fähigkeit des Dateisystems, mit großen Dateien nicht nur überhaupt, sondern sogar effizient umgehen zu können.

  • Unser eigenes Fachwissen hier bei MySQL AB bezüglich des jeweiligen Betriebssystems. Kennen wir eine Plattform gut, dann können wir plattformspezifische Optimierungen und Fehlerbehebungen bei der Kompilierung aktivieren. Außerdem können wir Informationen zur optimalen Konfiguration Ihres Systems für MySQL vermitteln.

  • Der Umfang der Tests, die wir intern für ähnliche Konfigurationen durchgeführt haben.

  • Die Anzahl der Benutzer, die MySQL erfolgreich auf Plattformen mit ähnlichen Konfigurationen verwenden. Ist diese Zahl groß, dann ist die Wahrscheinlichkeit plattformspezifischer Überraschungen eher gering.

Basierend auf diesen Kriterien sind die derzeit am besten für die Ausführung von MySQL geeigneten Plattformen x86 mit SuSE Linux (Kernel 2.4 oder 2.6) und ReiserFS (oder jede ähnliche Linux-Distribution) und SPARC mit Solaris (2.7 bis 2.9). An dritter Stelle kommt FreeBSD; wir hoffen aber, es in den Kreis der Favoriten aufnehmen zu können, sobald die Thread-Bibliothek optimiert wurde. Außerdem sind wir natürlich zuversichtlich, irgendwann alle anderen Plattformen, auf denen MySQL derzeit kompiliert und ausgeführt werden kann, aber noch nicht mit derselben hohen Stabilität und Leistungsfähigkeit läuft, in diese Runde aufnehmen zu können. Dies erfordert einigen Aufwand unsererseits in Zusammenarbeit mit den Entwicklern der Betriebssysteme und Bibliothekskomponenten, auf die MySQL angewiesen ist. Wenn Sie an der Optimierung einer dieser Komponenten interessiert sind, Einfluss auf deren Entwicklung ausüben können und detailliertere Angaben dazu benötigen, was MySQL für eine bessere Ausführung benötigt, dann senden Sie eine E-Mail an die MySQL-Mailingliste internals. Siehe auch Abschnitt 1.7.1, „Die MySQL-Mailinglisten“.

Bitte beachten Sie, dass es nicht Zweck des obigen Vergleichs ist, festzustellen, dass ein Betriebssystem generell besser oder schlechter ist als ein anderes. Die Rede ist hier ausschließlich von der Auswahl eines Betriebssystems für den ganz speziellen Zweck, MySQL auszuführen. Wenn man andere Schwerpunkte setzen würde, würde das Ergebnis des Vergleichs sicher auch anders ausfallen. In bestimmten Fällen besteht der Grund dafür, dass ein Betriebssystem für die Ausführung von MySQL besser geeignet ist als ein anderes, schlicht und einfach darin, dass wir mehr Aufwand in Tests und Optimierung einer bestimmten Plattform gesteckt haben. Wir geben hier unsere Beobachtungen wieder, um Ihnen bei der Entscheidung zu helfen, eine geeignete Plattform für MySQL auszuwählen.

2.1.2. Welche MySQL-Version Sie benutzen sollten

Wenn Sie die Installation von MySQL vorbereiten, sollten Sie entscheiden, welche Version Sie benutzen. Die Entwicklung von MySQL erfolgt in mehreren Release-Serien, von denen Sie sich die für Ihre Zwecke geeignetste auswählen können. Wenn Sie sich für eine Version entschieden haben, können Sie ein Distributionsformat auswählen. Releases sind im Binär- und im Quellformat verfügbar.

2.1.2.1. Auswahl der bestgeeigneten Version von MySQL

Die erste zu treffende Entscheidung ist die, ob Sie einen (stabilen) Produktions-Release oder aber einen Entwicklungs-Release verwenden wollen. Im MySQL-Entwicklungsprozess koexistieren mehrere Release-Serien miteinander, die sich alle durch ihren Grad der Ausgereiftheit voneinander unterscheiden:

  • MySQL 5.1 ist die nächste Entwicklungs-Release-Serie. In ihr werden neue Funktionen implementiert. Alpha-Releases sind derzeit verfügbar und erlauben umfassende Tests durch interessierte Benutzer.

  • MySQL 5.0 ist die aktuelle Release-Serie für Produktionsumgebungen. Neue Releases erscheinen nur bei Vorhandensein von Bugfixes; neue Funktionalitäten werden nicht ergänzt, da sie die Stabilität beeinträchtigen könnten.

  • MySQL 4.1 ist die vorherige Release-Serie für Produktionsumgebungen. Neue Releases erscheinen hier, wenn kritische Bugs und Sicherheitslücken behoben werden. Bei dieser Serie werden keine wesentlichen neuen Funktionen mehr hinzugefügt.

  • MySQL 4.0 und 3.23 sind die alten stabilen Release-Serien für Produktionsumgebungen. Diese Versionen sind nun stillgelegt, d. h., neue Releases erscheinen nur, wenn extrem kritische, vorzugsweise sicherheitsrelevante Bugs behoben werden.

Wir halten ein endgültiges Einfrieren von Codes nicht für machbar, da dies Bugfixes und andere Fehlerbereinigungen, die erforderlich sind, unmöglich machen würde. Das von uns bevorzugte „Teileinfrieren“ erlaubt uns das Ergänzen von Kleinigkeiten, die sich nicht auf die Einsatzfähigkeit eines Produktions-Releases auswirken sollten. Natürlich pflanzen sich wesentliche Bugfixes in früheren Serien auch auf ihre jeweiligen Nachfolger fort.

Wenn Sie MySQL zum ersten Mal verwenden oder es auf ein System portieren wollen, für das keine binäre Distribution verfügbar ist, empfehlen wir Ihnen normalerweise, die Produktions-Release-Serie zu verwenden. Derzeit ist dies MySQL 5.0. Alle MySQL-Releases – auch die der Entwicklungsserie – werden vor der Veröffentlichung mit den MySQL-Benchmarks und der umfangreichen Testsuite überprüft.

Wenn Sie ein älteres System verwenden und ein Upgrade durchzuführen beabsichtigen, gleichzeitig aber verhindern wollen, dass es während der Aktualisierung zu Problemen kommt, dann sollten Sie auf die aktuelle Version derselben Release-Serie aktualisieren, die Sie bereits verwenden (hierbei ist nur der letzte Teil der Versionsnummer höher als bei der von Ihnen verwendeten Version). Wir haben lediglich versucht, kritische Bugs zu beheben und kleine, relativ „sichere“ Änderungen an dieser Version vorzunehmen.

Wenn Sie neue Funktionen verwenden wollen, die nicht in der Produktions-Release-Serie vorhanden sind, können Sie sich auch für eine Version aus der Entwicklungsserie entscheiden. Beachten Sie, dass die Entwicklungs-Releases nicht so stabil sind wie die Produktions-Releases.

Wollen Sie die allerneuesten Quellcodes mit allen aktuellen Patches und Bugfixes einsetzen, dann können Sie eines unserer BitKeeper-Repositorys verwenden. Dies sind nicht „Releases“ im eigentlichen Sinne, sondern Vorabversionen des Codes, auf dem zukünftige Releases basieren werden.

Das MySQL-Benennungsschema verwendet Release-Namen, die aus drei Zahlen und einem Suffix bestehen. Dies kann etwa so aussehen: mysql-5.0.12-beta. Die Zahlen im Release-Namen sind wie folgt zu interpretieren:

  • Die erste Zahl (5) ist die Hauptversion und beschreibt das Dateiformat. Alle MySQL 5-Releases haben das gleiche Dateiformat.

  • Die zweite Zahl (0) ist der Release-Level. Zusammengefasst bilden Hauptversion und Release-Level die Nummer der Release-Serie.

  • Die dritte Zahl (12) ist die Versionsnummer innerhalb der Release-Serie. Diese wird bei jedem neuen Release um den Wert 1 erhöht. In der Regel sollten Sie immer die neueste Version in der von Ihnen gewählten Serie verwenden.

Bei kleineren Updates wird jeweils die letzte Zahl im Versions-String hochgezählt. Liegen wesentliche Neuerungen bei den Merkmalen oder kleinere Inkompatibilitäten mit vorherigen Versionen vor, dann wird die zweite Zahl im Versions-String hochgezählt. Ändert sich schließlich das Dateiformat, dann wird die erste Zahl erhöht.

Release-Namen enthalten auch ein Suffix, welches die Stabilitätsstufe für den Release angibt. Releases innerhalb einer Serie durchschritten eine bestimmte Abfolge von Suffixen, die jeweils anzeigen, wie sich die Stabilität erhöht. Mögliche Suffixe sind die folgenden:

  • alpha zeigt an, dass der Release neue Funktionen enthält, die noch nicht umfassend getestet wurden. Bekannte Bugs sollten im Abschnitt „News“ dokumentiert sein. Siehe auch Anhang D, MySQL-Änderungsverlauf (Change History). Die meisten Alpha-Releases implementieren neue Befehle und Erweiterungen. Die aktive Entwicklung, die auch umfassende Änderungen am Code beinhalten kann, erfolgt in der Alphaphase. Allerdings werden vor der Veröffentlichung eines Releases Tests durchgeführt.

  • beta bedeutet, dass der Release funktionsseitig abgeschlossen ist und der gesamte neue Code getestet wurde. Es werden keine wesentlichen neuen Funktionen und Merkmale mehr hinzugefügt. Es sollten auch keine kritischen Bugs mehr vorhanden sein. Eine Version wechselt vom Alpha- in den Betastatus, wenn mindestens einen Monat lang keine schweren Bugs mehr für die Alphaversion gemeldet wurden und wir nicht beabsichtigen, neue Merkmale hinzuzufügen, die die Zuverlässigkeit der zuvor implementierten Funktionen beeinträchtigen könnten.

    Bei zukünftigen Beta-, Release-Candidate- oder Produktions-Releases erfolgen keine Änderungen mehr an APIs, extern sichtbaren Strukturen und Spalten für SQL-Anweisungen.

  • rc ist ein Release-Candidate, d. h. eine Betaversion, die bereits seit einiger Zeit verfügbar ist und offensichtlich stabil arbeitet. Es werden nur noch kleinere Fehlerkorrekturen vorgenommen (deswegen entspricht der Release-Candidate auch dem, was man früher als Gamma-Release bezeichnete).

  • Ist kein Suffix vorhanden, dann bedeutet dies, dass die Version bereits seit einiger Zeit an vielen verschiedenen Standorten läuft, ohne dass kritische nachvollziehbare Bugs gemeldet wurden (Ausnahme: plattformspezifische Bugs). Bei solchen Releases werden nur kritische Bugfixes implementiert. Eine solche Version nennen wir Produktions-Release (stabilen Release) oder auch „GA-Release“ (General Availability, allgemeine Verfügbarkeit).

MySQL verwendet ein Benennungsschema, welches sich geringfügig von dem anderer Produkte unterscheidet. In der Regel können Sie problemlos jede Version einsetzen, die bereits seit ein paar Wochen verfügbar ist, ohne durch eine neue Version innerhalb derselben Release-Serie ersetzt worden zu sein.

Alle MySQL-Releases werden mit unseren Standardtests und Benchmarks überprüft, damit gewährleistet ist, dass ihr Einsatz relativ sicher ist. Da die Standardtests im Laufe der Zeit so erweitert werden, dass alle zuvor gefundenen Bugs berücksichtigt werden, wird unsere Testsuite immer besser.

Alle Releases wurden zumindest mit den folgenden Tools getestet:

  • Einer internen Testsuite.

    Das Verzeichnis mysql-test enthält ein umfangreiches Set mit Testfällen. Wir führen diese Tests an praktisch jeder Serverbinärdatei durch. Weitere Informationen zur Testsuite finden Sie in Abschnitt 26.1.2, „MySQL-Testsystem“.

  • MySQL-Benchmarks.

    Diese Reihe führt eine Anzahl gängiger Abfragen aus. Ferner ermöglicht sie zu bestimmen, ob der letzte Optimierungsstapel den Code tatsächlich beschleunigt hat. Siehe auch Abschnitt 7.1.4, „Die MySQL-Benchmark-Reihe“.

  • Crash-Me-Test.

    Dieser Test versucht zu ermitteln, welche Funktionen die Datenbank unterstützt und welche Fähigkeiten und Einschränkungen vorhanden sind. Siehe auch Abschnitt 7.1.4, „Die MySQL-Benchmark-Reihe“.

Wir testen außerdem die neueste MySQL-Version immer auf zumindest einem System in unserer internen Produktionsumgebung. Dabei stehen uns mehr als 100 Gbyte Daten zum Arbeiten zur Verfügung.

2.1.2.2. Auswahl eines Distributionsformats

Nachdem Sie die zu installierende MySQL-Version gewählt haben, müssen Sie noch festlegen, ob eine binäre oder eine Quelldistribution für die Installation verwendet werden soll. In den meisten Fällen werden Sie sich wahrscheinlich für die Binärdistribution entscheiden, sofern es für Ihre Plattform eine solche gibt. Binärdistributionen sind für viele Plattformen im nativen Format verfügbar, z. B. RPM-Dateien für Linux oder DMG-Pakete für Mac OS X. Distributionen sind außerdem als ZIP-Archive oder komprimierte tar-Dateien erhältlich.

Die folgenden Gründe sprechen für die Verwendung einer Binärdistribution:

  • Binärdistributionen sind in der Regel einfacher zu installieren als Quelldistributionen.

  • Um unterschiedliche Benutzeranforderungen zu erfüllen, bieten wir zwei verschiedene Binärversionen an: eine kompilierte Fassung mit der Kernfunktionalität und eine weitere (MySQL-Max) mit einem erweiterten Feature-Set. Beide Versionen werden aus derselben Quelldistribution kompiliert. Alle nativen MySQL-Clients können mit Servern aus beiden MySQL-Versionen Verbindungen herstellen.

    Die erweiterte MySQL-Binärdistribution ist am Suffix -max zu erkennen und mit den gleichen Optionen konfiguriert wie mysqld-max. Siehe auch Abschnitt 5.3, „mysqld-max, ein erweiterter mysqld-Server“.

    Wenn Sie bei RPM-Distributionen die RPM-Datei MySQL-Max verwenden wollen, müssen Sie zuerst das Standard-RPM MySQL-server installieren.

Unter bestimmten Umständen kann es auch von Vorteil sein, MySQL aus einer Quelldistribution heraus zu installieren:

  • Sie wollen MySQL an einer expliziten Position installieren. Die Standardbinärdistributionen lassen sich an jeder Installationsposition ausführen, aber unter Umständen benötigen Sie noch mehr Flexibilität, um MySQL-Komponenten an jeder beliebigen Stelle abzulegen.

  • Sie wollen mysqld konfigurieren, um sicherzustellen, dass Funktionen, die unter Umständen nicht in den Standardbinärdistributionen enthalten sind, in jedem Fall vorhanden sind. Es folgt eine Liste der meistbenötigten Zusatzoptionen, die Sie verwenden können, um die Verfügbarkeit von Funktionen zu gewährleisten:

    • --with-innodb

    • --with-berkeley-db (nicht auf allen Plattformen verfügbar)

    • --with-libwrap

    • --with-named-z-libs (erfolgt für einige der Binärdistributionen)

    • --with-debug[=full]

  • Sie wollen mysqld ohne bestimmte Funktionen konfigurieren, die in den Standardbinärdistributionen enthalten sind. So werden Distributionen beispielsweise mit der Unterstützung für alle Zeichensätze kompiliert. Wenn Sie einen kleineren MySQL Server wünschen, können Sie diesen so kompilieren, dass nur die erforderlichen Zeichensätze unterstützt werden.

  • Sie haben einen speziellen Compiler (z. B. pgcc) oder wollen Compiler-Optionen nutzen, die für Ihren Prozessor besser optimiert sind. Binärdistributionen werden mit Optionen kompiliert, die auf einer Vielzahl von Prozessoren derselben Prozessorfamilie funktionieren sollten.

  • Sie wollen die aktuellsten Quelltexte aus einem der BitKeeper-Repositorys verwenden, um Zugang zu allen aktuellen Bugfixes zu haben. Wenn Sie beispielsweise einen Bug gefunden und diesen dem MySQL-Entwicklerteam gemeldet haben, dann wird der Bugfix in das Quellcode-Repository geschrieben, und Sie können dann dort darauf zugreifen. Der Bugfix erscheint in einem Release erst, wenn dieser tatsächlich veröffentlicht wird.

  • Sie wollen den C- oder C++-Code lesen (oder ändern), aus dem MySQL besteht. Zu diesem Zweck sollten Sie sich eine Quelldistribution besorgen, denn der Quellcode ist immer das ultimative Handbuch.

  • Quelldistributionen enthalten mehr Tests und Beispiele als Binärdistributionen.

2.1.2.3. Wann und wie Updates veröffentlicht werden

MySQL entwickelt sich ziemlich schnell, und neue Entwicklungen wollen wir anderen MySQL-Benutzern möglichst umgehend bereitstellen. Deswegen erstellen wir immer dann einen neuen Release, wenn wir neue und nützliche Funktionen integriert haben, die auch für andere Benutzer nützlich oder notwendig sein könnten.

Außerdem versuchen wir Benutzern zu helfen, die nach Funktionen fragen, welche leicht zu implementieren sind. Wir achten darauf, was unsere lizenzierten Benutzer – und insbesondere die Kunden unseres Supports – wollen, und versuchen ihnen in dieser Hinsicht zu helfen.

Niemand ist gezwungen, einen neuen Release herunterzuladen. Der Abschnitt „News“ soll Ihnen dabei helfen zu ermitteln, ob im neuen Release etwas dabei ist, was Sie wirklich brauchen. Siehe auch Anhang D, MySQL-Änderungsverlauf (Change History).

Bei der Aktualisierung von MySQL halten wir uns an die folgenden Richtlinien:

  • Releases werden innerhalb jeder Serie veröffentlicht. Bei jedem Release ist die letzte Zahl in der Versionsnummer um 1 höher als beim vorherigen Release in der Serie.

  • Stabile Produktions-Releases erscheinen in der Regel ein- bis zweimal jährlich. Werden jedoch kleine Bugs gefunden, dann wird ein Release nur mit Bugfixes veröffentlicht.

  • Arbeits-Releases und Bugfixes für ältere Releases erscheinen normalerweise alle vier bis acht Wochen.

  • Binärdistributionen für bestimmte Plattformen werden von uns für Haupt-Releases erstellt. Binärdistributionen für andere Systeme werden von Dritten angefertigt, dies aber wahrscheinlich weniger häufig.

  • Bugfixes werden bereitgestellt, sobald kleine oder unkritische, aber ärgerliche Bugs erkannt und korrigiert wurden. Dieses Fixes sind in den BitKeeper-Repositorys sofort verfügbar und außerdem Bestandteil des nächsten Releases.

  • Wird durch Zufall ein schwerwiegender Bug in einem Release gefunden, dann ist es unser Grundsatz, diesen in einem neuen Release schnellstmöglich zu beheben. (Wir wünschten uns, andere Unternehmen würden das auch so handhaben!)

2.1.2.4. Release-Philosophie: keine bekannten Bugs in Releases

Wir verwenden viel Zeit und Mühe darauf, unsere Releases fehlerfrei zu machen. Bislang haben wir nicht eine einzige MySQL-Version veröffentlicht, die einen bekannten nachvollziehbaren schweren Bug aufwies (ein „schwerer“ Bug ist ein Umstand, der dazu führt, dass MySQL bei normaler Verwendung abstürzt, falsche Antworten für normale Abfragen erzeugt oder ein Sicherheitsproblem aufweist).

Wir haben alle offenen Probleme, Bugs und Streitfragen dokumentiert, die von strukturellen Entscheidungen abhängen. Siehe auch Abschnitt A.8, „Bekannte Fehler und konzeptionelle Unzulänglichkeiten in MySQL“.

Unser Ziel ist es, alle Bugs zu beheben, die behebbar sind, ohne eine stabile MySQL-Version weniger stabil machen zu müssen. In bestimmten Fällen bedeutet dies, dass wir ein Problem in den Entwicklungsversionen, nicht aber in der stabilen Produktionsversion beheben können. Natürlich dokumentieren wir solche Probleme, damit sie den Benutzern bekannt sind.

Es folgt eine Beschreibung unserer Vorgehensweise:

  • Wir überwachen das Auftreten von Bugs mithilfe unserer Kundensupportliste, der Bugdatenbank unter http://bugs.mysql.com/ und der externen MySQL-Mailinglisten.

  • Alle gemeldeten Bugs für die aktiven Versionen werden in die Bugdatenbank eingegeben.

  • Wenn wir einen Bug beheben, dann versuchen wir immer, einen Testfall dafür zu erstellen und diesen in unser Testsystem einzufügen, damit gewährleistet ist, dass der Bug nie wieder auftreten kann, ohne sofort erkannt zu werden. (Solche Testfälle gibt es für ca. 90 Prozent aller behobenen Bugs.)

  • Wir erstellen Testfälle für alle neuen Funktionen, die wir in MySQL ergänzen.

  • Bevor wir mit der Erstellung eines neuen MySQL-Releases beginnen, stellen wir sicher, dass alle gemeldeten nachvollziehbaren Bugs der betreffenden MySQL-Version (3.23.x, 4.0.x, 4.1.x, 5.0.x, 5.1.x usw.) behoben sind. Wenn ein Fehler aufgrund interner Strukturentscheidungen in MySQL nicht behoben werden kann, wird dies im Handbuch dokumentiert. Siehe auch Abschnitt A.8, „Bekannte Fehler und konzeptionelle Unzulänglichkeiten in MySQL“.

  • Wir erstellen einen Build für alle Plattformen, für die Binärdistributionen unterstützt werden, und verarbeiten alle mit unserer Testsuite und der Benchmark-Reihe.

  • Schlagen Testsuite oder Benchmark-Reihe bei einer Plattform fehl, dann wird hierfür keine Binärdistribution veröffentlicht. Ist das Problem in einem allgemeinen Fehler im Quellcode begründet, dann beheben wir es und erstellen den Build einschließlich aller Tests auf allen Systemen von Grund auf neu.

  • Erstellungs- und Testvorgänge benötigen etwa eine Woche. Erhalten wir während dieses Zeitraums eine Meldung zu einem schweren Bug (z. B. einem Bug, der einen Speicherauszug verursacht), dann beheben wir das Problem und starten die Erstellung von Neuem.

  • Wenn die Binärdistributionen auf http://dev.mysql.com/ veröffentlicht wurden, senden wir eine Bekanntmachung an die Mailinglisten mysql und announce. Siehe auch Abschnitt 1.7.1, „Die MySQL-Mailinglisten“. Die Bekanntmachung enthält eine Liste aller Änderungen am und aller bekannten Probleme mit dem Release. Der Abschnitt Known Problems (Bekannte Probleme) in den Versionshinweisen wurde bislang nur bei einer Hand voll Releases benötigt.

  • Damit unsere Benutzer möglichst umgehend auf die aktuellsten MySQL-Funktionen zugreifen können, versuchen wir, alle vier bis acht Wochen einen neuen MySQL-Release anzufertigen. Momentaufnahmen des Quellcodes werden täglich erstellt und sind unter http://downloads.mysql.com/snapshots.php verfügbar.

  • Wenn wir trotz aller Bemühungen nach der Freigabe eines Releases die Meldung erhalten, dass ein kritisches Problem für den Build einer bestimmten Plattform vorliegt, dann beheben wir dieses sofort und erstellen einen neuen 'a'-Release für die betreffende Plattform. Weil so viele Leute MySQL benutzen, sind Probleme schnell gefunden und behoben.

  • Unsere Leistungen bei der Erstellung stabiler Releases sind recht gut. Unter den letzten 150 Releases waren es weniger als zehn, für die wir einen neuen Build erstellen mussten. In drei dieser Fälle wurde der Bug von einer fehlerhaften glibc-Bibliothek auf einem unserer Erstellungssysteme verursacht, die ausfindig zu machen uns recht viel Zeit gekostet hat.

2.1.2.5. MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden

Eine der Dienstleistungen von MySQL AB besteht in der Bereitstellung von MySQL-Binärdistributionen, die entweder auf unseren eigenen Systemen oder aber auf Systemen kompiliert wurden, bei denen uns Unterstützer von MySQL freundlicherweise Zugang zu ihren Computern gewährt haben.

Neben den Binärdateien in den plattformspezifischen Paketformaten bieten wir für eine Anzahl von Plattformen auch Binärdistributionen in Form komprimierter tar-Dateien (.tar.gz-Dateien) an. Siehe auch Abschnitt 2.2, „Schnelle Standardinstallation von MySQL“.

Die RPM-Distributionen für MySQL 5.1-Releases, die wir über die Website bereitstellen, werden von MySQL AB angefertigt.

Informationen zu Windows-Distributionen finden Sie in Abschnitt 2.3, „Installation von MySQL unter Windows“.

Diese Distributionen werden mithilfe des Skripts Build-tools/Do-compile erzeugt, das den Quellcode kompiliert und das Binärarchiv tar.gz mithilfe von scripts/make_binary_distribution erstellt.

Diese Binärdateien werden mit den folgenden Compilern und Optionen konfiguriert und erstellt. Diese Informationen können Sie auch abrufen, indem Sie die Variablen COMP_ENV_INFO und CONFIGURE_LINE im Skript bin/mysqlbug jeder tar-Binärdistributionsdatei abfragen.

Sollten Sie optimalere Optionen für einen der folgenden configure-Befehle haben, dann schicken Sie diese an die MySQL-Mailingliste internals. Siehe auch Abschnitt 1.7.1, „Die MySQL-Mailinglisten“.

Wollen Sie eine Debugversion von MySQL kompilieren, dann sollten Sie die Option--with-debug oder --with-debug=full zu den folgenden configure-Befehlen hinzufügen und ggf. vorhandene -fomit-frame-pointer-Optionen entfernen.

Die folgenden Binärdateien werden auf den Entwicklungssystemen von MySQL AB erstellt:

  • Linux 2.4.xx x86 mit gcc 2.95.3:

    CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro
    -felide-constructors" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --disable-shared
    --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
    
  • Linux 2.4.x x86 mit icc (Intel C++ Compiler 8.1 oder höhere Releases):

    CC=icc CXX=icpc CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict"
    CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --enable-assembler
    --disable-shared --with-client-ldflags=-all-static
    --with-mysqld-ldflags=-all-static --with-embedded-server --with-innodb
    

    Beachten Sie, dass Version 8.1 und höher des Intel-Compilers separate Treiber für „reines“ C (icc) und C++ (icpc) aufweisen; wenn Sie icc Version 8.0 oder älter zur Erstellung von MySQL verwenden, müssen Sie die Einstellung CXX=icc vornehmen.

  • Linux 2.4.xx Intel Itanium 2 mit ecc (Intel C++ Itanium Compiler 7.0):

    CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2
    -tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile
    
  • Linux 2.4.xx Intel Itanium mit ecc (Intel C++ Itanium Compiler 7.0):

    CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile
    
  • Linux 2.4.xx alpha mit ccc (Compaq C V6.2-505/Compaq C++ V6.3-006):

    CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch
    generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-mysqld-ldflags=-non_shared
    --with-client-ldflags=-non_shared --disable-shared
    
  • Linux 2.x.xx ppc mit gcc 2.95.4:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared --with-embedded-server
    --with-innodb
    
  • Linux 2.4.xx s390 mit gcc 2.95.3:

    CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
    
  • Linux 2.4.xx x86_64 (AMD64) mit gcc 3.2.1:

    CXX=gcc ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    
  • Sun Solaris 8 x86 mit gcc 3.2.3:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared --with-innodb
    
  • Sun Solaris 8 SPARC mit gcc 3.2:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --with-named-z-libs=no
    --with-named-curses-libs=-lcurses --disable-shared
    
  • Sun Solaris 8 SPARC (64-Bit) mit gcc 3.2:

    CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no
    --with-named-curses-libs=-lcurses --disable-shared
    
  • Sun Solaris 9 SPARC mit gcc 2.95.3:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --with-named-curses-libs=-lcurses
    --disable-shared
    
  • Sun Solaris 9 SPARC mit cc-5.0 (Sun Forte 5.0):

    CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt
    -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9"
    ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --enable-assembler
    --with-named-z-libs=no --enable-thread-safe-client --disable-shared
    
  • IBM AIX 4.3.2 ppc mit gcc 3.2.3:

    CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2
    -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --disable-shared
    
  • IBM AIX 4.3.3 ppc mit xlC_r (IBM Visual Age C/C++ 6.0):

    CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no
    --disable-shared --with-innodb
    
  • IBM AIX 5.1.0 ppc mit gcc 3.3:

    CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc
    -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no
    --disable-shared
    
  • IBM AIX 5.2.0 ppc mit xlC_r (IBM Visual Age C/C++ 6.0):

    CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    CXX=xlC_r CXXFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no
    --disable-shared --with-embedded-server --with-innodb
    
  • HP-UX 10.20 pa-risc1.1 mit gcc 3.1:

    CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX
    -I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti
    -O3 -fPIC" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-pthread --with-named-thread-libs=-ldce
    --with-lib-ccflags=-fPIC --disable-shared
    
  • HP-UX 11.00 pa-risc mit aCC (HP ANSI C++ B3910B A.03.50):

    CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-embedded-server --with-innodb
    
  • HP-UX 11.11 pa-risc2.0 64-Bit mit aCC (HP ANSI C++ B3910B A.03.33):

    CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    
  • HP-UX 11.11 pa-risc2.0 32-Bit mit aCC (HP ANSI C++ B3910B A.03.33):

    CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-innodb
    
  • HP-UX 11.22 ia64 64-Bit mit aCC (HP aC++/ANSI C B3910B A.05.50):

    CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2"
    ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-embedded-server --with-innodb
    
  • Apple Mac OS X 10.2 powerpc mit gcc 3.1:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    
  • FreeBSD 4.7 i386 mit gcc 2.95.4:

    CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --with-named-z-libs=not-used
    --disable-shared
    
  • FreeBSD 4.7 i386 mit LinuxThreads mit gcc 2.95.4:

    CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
    -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
    CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
    -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --enable-thread-safe-client
    --enable-local-infile --enable-assembler
    --with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R
    -D_THREAD_SAFE -I /usr/local/include/pthread/linuxthreads
    -L/usr/local/lib -llthread -llgcc_r" --disable-shared
    --with-embedded-server --with-innodb
    
  • QNX Neutrino 6.2.1 i386 mit gcc 2.95.3qnx-nto 20010315:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    

Die folgenden Binärdistributionen wurden auf Systemen von Dritten erstellt, die MySQL AB freundlicherweise von anderen Benutzern zur Verfügung gestellt wurden. Diese werden aus Gefälligkeit bereitgestellt; MySQL AB hat keine vollständige Kontrolle über diese Systeme, weswegen wir für Binärdistributionen, die auf ihnen erstellt wurden, nur eingeschränkten Support bieten können.

  • SCO Unix 3.2v5.0.7 i386 mit gcc 2.95.3:

    CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium
    -felide-constructors" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client
    --disable-shared
    
  • SCO UnixWare 7.1.4 i386 mit CC 3.2:

    CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client
    --disable-shared --with-readline
    
  • SCO OpenServer 6.0.0 i386 mit CC 3.2:

    CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client
    --disable-shared --with-readline
    
  • Compaq Tru64 OSF/1 V5.1 732 alpha mit cc/cxx (Compaq C V6.3-029i/DIGITAL C++ V6.1-027):

    CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline
    speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias
    -fast -inline speed -speculate all -noexceptions -nortti" ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile
    --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared
    --with-mysqld-ldflags=-all-static
    
  • SGI Irix 6.5 IP32 mit gcc 3.0.1:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    
  • FreeBSD/sparc64 5.0 mit gcc 3.2.1:

    CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
    --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared --with-innodb
    

Die folgenden Kompilierungsoptionen wurden für Binärpakete verwendet, die MySQL AB in der Vergangenheit bereitgestellt hat. Diese Binärdistributionen werden nicht mehr aktualisiert. Die Kompilierungsoptionen werden zu Referenzzwecken an diese Stelle aufgelistet.

  • Linux 2.2.xx SPARC mit egcs 1.1.2:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --disable-shared
    
  • Linux 2.2.x mit x686 mit gcc 2.95.2:

    CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro
    -felide-constructors -fno-exceptions -fno-rtti" ./configure
    --prefix=/usr/local/mysql --enable-assembler
    --with-mysqld-ldflags=-all-static --disable-shared
    --with-extra-charsets=complex
    
  • SunOS 4.1.4 2 sun4c mit gcc 2.7.2.1:

    CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure
    --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex
    --enable-assembler
    
  • SunOS 5.5.1 (und höher) sun4u mit egcs 1.0.3a oder 2.90.27 oder gcc 2.95.2 und höher:

    CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors
    -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-low-memory --with-extra-charsets=complex --enable-assembler
    
  • SunOS 5.6 i86pc mit gcc 2.8.1:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    --with-low-memory --with-extra-charsets=complex
    
  • BSDI BSD/OS 3.1 i386 mit gcc 2.7.2.1:

    CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex
    
  • BSDI BSD/OS 2.1 i386 mit gcc 2.7.2:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex
    
  • AIX 4.2 mit gcc 2.7.2.2:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex
    

2.1.3. Woher man MySQL bekommt

Informationen zur aktuellen MySQL-Version und Hinweise zum Download finden Sie auf unserer Downloadseite unter http://dev.mysql.com/downloads/. Eine vollständige und aktuelle Liste der Spiegelserver für den MySQL-Download finden Sie unter http://dev.mysql.com/downloads/mirrors.html. Dort erhalten Sie auch Hinweise dazu, wie Sie selbst einen MySQL-Spiegelserver anbieten können und wie Sie ausgefallene oder veraltete Spiegelserver melden.

Der Hauptspiegelserver ist über http://mirrors.sunsite.dk/mysql/ erreichbar.

2.1.4. Bestätigen der Paketintegrität mittels MD5-Prüfsummen oder GnuPG

Wenn Sie das für Ihre Zwecke geeignete MySQL-Paket heruntergeladen haben, sollten Sie, bevor Sie die Installation starten, sicherstellen, dass es intakt ist und nicht verändert wurde. Für diese Integritätsprüfung bietet MySQL drei Methoden an:

  • MD5-Prüfsummen

  • Kryptografiesignaturen unter Verwendung von GnuPG (GNU Privacy Guard)

  • die eingebaute RPM-Integritätsprüfmethode für RPM-Pakete

Die folgenden Abschnitte beschreiben, wie diese Methoden verwendet werden.

Wenn Sie feststellen, dass MD5-Prüfsumme oder GPG-Signaturen nicht übereinstimmen, probieren Sie zunächst, das betreffende Paket noch einmal von einem anderen Spiegelserver herunterzuladen. Wenn Sie die Integrität des Pakets mehrfach nicht erfolgreich verifizieren können, teilen Sie uns dies unter Angabe des vollständigen Paketnamens und des verwendeten Downloadservers via E-Mail an die Adresse oder mit. Bitte melden Sie Probleme mit dem Download nicht über das Bugmeldesystem.

2.1.4.1. Verifizieren der MD5-Prüfsumme

Wenn Sie ein MySQL-Paket heruntergeladen haben, sollten Sie sicherstellen, dass die zugehörige MD5-Prüfsumme mit der auf den MySQL-Downloadseiten angegebenen Prüfsumme übereinstimmt. Jedes Paket weist eine individuelle Prüfsumme auf, die Sie mithilfe des folgenden Befehls abfragen können (hierbei ist package_name der Name des heruntergeladenen Pakets):

shell> md5sum package_name

Beispiel:

shell> md5sum mysql-standard-5.1.5-alpha-linux-i686.tar.gz
aaab65abbec64d5e907dcd41b8699945  mysql-standard-5.1.5-alpha-linux-i686.tar.gz

Vergewissern Sie sich, dass die resultierende Prüfsumme (der angezeigte Hexadezimal-String) mit der Angabe übereinstimmt, die auf der Downloadseite unmittelbar unter dem betreffenden Paket angegeben ist.

Hinweis: Sie müssen die Prüfsumme der Archivdatei (d. h. der .zip- oder .tar.gz-Datei) verifizieren, nicht die Prüfsumme der Dateien, die im Archiv gespeichert sind.

Beachten Sie, dass nicht alle Betriebssysteme den Befehl md5sum unterstützen. Bei manchen heißt er einfach md5, bei anderen ist er überhaupt nicht enthalten. Bei Linux ist er Teil des Pakets GNU Text Utilities, das für eine Vielzahl von Plattformen verfügbar ist. Sie können den Quellcode auch unter http://www.gnu.org/software/textutils/ herunterladen. Wenn Sie OpenSSL installiert haben, können Sie stattdessen den Befehl openssl md5 package_name verwenden. Eine Windows-Implementierung des Befehls md5 ist unter http://www.fourmilab.ch/md5/ verfügbar. winMd5Sum ist ein grafisches MD5-Prüfwerkzeug, das Sie sich unter http://www.nullriver.com/index/products/winmd5sum beschaffen können.

2.1.4.2. Signaturüberprüfung mit GnuPG

Eine andere Methode zur Überprüfung der Integrität und Authentizität eines Pakets besteht in der Verwendung kryptografischer Signaturen. Diese sind zuverlässiger, aber arbeitsaufwändiger als MD5-Prüfsummen.

Wir von MySQL AB signieren MySQL-Pakete für den Download mit GnuPG (GNU Privacy Guard). GnuPG ist eine Open-Source-Alternative zum bekannten Pretty Good Privacy (PGP) von Phil Zimmermann. Weitere Informationen zu GnuPG sowie zu dessen Download und Installation auf Ihrem System finden Sie unter http://www.gnupg.org/. Die meisten Linux-Distributionen werden mit standardmäßig installiertem GnuPG ausgeliefert. Weitere Informationen zu GnuPG finden Sie unter http://www.openpgp.org/.

Um die Signatur für ein bestimmtes Paket zu überprüfen, müssen Sie sich zunächst eine Kopie des GPG-Build-Schlüssels von MySQL AB beschaffen. Diese können Sie unter http://www.keyserver.net/ herunterladen. Der erforderliche Schlüssel heißt build@mysql.com. Alternativ können Sie den Schlüssel aus dem folgenden Text kopieren und direkt einfügen:

Key ID:
pub  1024D/5072E1F5 2003-02-03
     MySQL Package signing key (www.mysql.com) <build@mysql.com>
Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5

Public Key (ASCII-armored):

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj
a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv
bT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQ
cuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3q
zIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu
cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ
YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J
Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l
xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi
Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE
7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm
Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p
/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq
a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf
anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW
I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu
QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92
6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ
Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A
n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ==
=YJkx
-----END PGP PUBLIC KEY BLOCK-----

Um den Schlüssel in Ihren eigenen öffentlichen GPG-Schlüsselbund zu importieren, verwenden Sie gpg --import. Haben Sie den Schlüssel beispielsweise unter dem Dateinamen mysql_pubkey.asc gespeichert, dann sieht der Importbefehl wie folgt aus:

shell> gpg --import mysql_pubkey.asc

Nachdem Sie den öffentlichen Schlüssel heruntergeladen und importiert haben, laden Sie das gewünschte MySQL-Paket und die entsprechende Signatur herunter (diese steht ebenfalls auf der Downloadseite zur Verfügung). Die Signaturdatei hat den gleichen Namen wie die Distributionsdatei und trägt die Erweiterung .asc. Ein Beispiel:

Distributionsdateimysql-standard-5.1.5-alpha-linux-i686.tar.gz
Signaturdateimysql-standard-5.1.5-alpha-linux-i686.tar.gz.asc

Stellen Sie sicher, dass beide Dateien im gleichen Verzeichnis gespeichert sind, und führen Sie dann den folgenden Befehl aus, um die Signatur der Distributionsdatei zu verifizieren:

shell> gpg --verify package_name.asc

Beispiel:

shell> gpg --verify mysql-standard-5.1.5-alpha-linux-i686.tar.gz.asc
gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 5072E1F5
gpg: Good signature from "MySQL Package signing key (www.mysql.com) <build@mysql.com>"

Die Meldung Good signature (Signatur korrekt) zeigt an, dass alles in Ordnung ist. Sie können alle Warnungen vom Typ insecure memory ignorieren, die unter Umständen angezeigt werden.

Weitere Informationen zum Umgang mit öffentlichen Schlüsseln finden Sie in der GPG-Dokumentation.

2.1.4.3. Signaturüberprüfung mit RPM

Bei RPM-Paketen ist keine separate Signatur vorhanden. RPM-Pakete enthalten vielmehr eine integrierte GPG-Signatur und eine MD5-Prüfsumme. Sie können ein Paket durch Ausführen des folgenden Befehls verifizieren:

shell> rpm --checksig package_name.rpm

Beispiel:

shell> rpm --checksig MySQL-server-5.1.5-alpha-0.i386.rpm
MySQL-server-5.1.5-alpha-0.i386.rpm: md5 gpg OK

Hinweis: Wenn Sie RPM 4.1 verwenden und die Meldung (GPG) NOT OK (MISSING KEYS: GPG#5072e1f5) erhalten, obwohl Sie den öffentlichen MySQL-Schlüssel zuerst in Ihren eigenen GPG-Schlüsselbund importiert haben, dann müssen Sie den Schlüssel zuerst in Ihren RPM-Schlüsselbund importieren. RPM 4.1 verwendet nicht länger den GPG-Schlüsselbund (oder GPG selbst). Stattdessen arbeitet es mit einem eigenen Schlüsselbund, da es eine systemweite Anwendung ist, während der öffentliche GPG-Schlüsselbund eine benutzerspezifische Datei ist. Um den öffentlichen MySQL-Schlüssel in den RPM-Schlüsselbund zu importieren, besorgen Sie sich den Schlüssel zunächst wie in Abschnitt 2.1.4.2, „Signaturüberprüfung mit GnuPG, beschrieben. Nachfolgend verwenden Sie den Befehl rpm --import für den Schlüsselimport. Haben Sie den öffentlichen Schlüssel beispielsweise unter dem Dateinamen mysql_pubkey.asc gespeichert, dann sieht der Importbefehl wie folgt aus:

shell> rpm --import mysql_pubkey.asc

Wie Sie sich den öffentlichen MySQL-Schlüssel beschaffen, lesen Sie in Abschnitt 2.1.4.2, „Signaturüberprüfung mit GnuPG.

2.1.5. Installationslayouts

Dieser Abschnitt beschreibt die standardmäßige Struktur der Verzeichnisse, die bei der Installation der von MySQL AB bereitgestellten Binär- oder Quelldistributionen erstellt werden. Distributionen anderer Anbieter verwenden unter Umständen andere Strukturen als die hier beschriebenen.

Bei MySQL 5.1 unter Windows heißt das Standardinstallationsverzeichnis C:\Programme\MySQL\MySQL Server 5.1. (Manche Windows-Benutzer ziehen eine Installation in C:\mysql vor, da dieses Verzeichnis früher einmal der Standardpfad war. Allerdings bleibt auch in diesem Fall die Struktur der Unterverzeichnisse dieselbe.) Das Installationsverzeichnis hat die folgenden Unterverzeichnisse:

VerzeichnisVerzeichnisinhalt
binClientprogramme und der mysqld-Server
dataLogdateien, Datenbanken
DocsDokumentation
examplesBeispielprogramme und -skripten
includeInclude-Dateien (Header-Dateien)
libBibliotheken
scriptsHilfsprogrammskripten
shareFehlermeldungsdateien

Installationen, die mit den Linux-RPM-Dateien von MySQL AB erstellt werden, erzeugen Dateien in den folgenden Systemverzeichnissen:

VerzeichnisVerzeichnisinhalt
/usr/binClientprogramme und -skripten
/usr/sbinDer mysqld-Server
/var/lib/mysqlLogdateien, Datenbanken
/usr/share/doc/packagesDokumentation
/usr/include/mysqlInclude-Dateien (Header-Dateien)
/usr/lib/mysqlBibliotheken
/usr/share/mysqlFehlermeldungs- und Zeichensatzdateien
/usr/share/sql-benchBenchmarks

Unter Unix wird eine tar-Binärdistributionsdatei installiert, indem sie an der gewählten Installationsposition (meist /usr/local/mysql) entpackt wird. Dabei werden die folgenden Unterverzeichnisse erstellt:

VerzeichnisVerzeichnisinhalt
binClientprogramme und der mysqld-Server
dataLogdateien, Datenbanken
docsDokumentation, ChangeLog
includeInclude-Dateien (Header-Dateien)
libBibliotheken
scriptsmysql_install_db
share/mysqlFehlermeldungsdateien
sql-benchBenchmarks

Eine Quelldistribution wird installiert, nachdem Sie sie konfiguriert und kompiliert haben. Standardmäßig werden bei der Installation Dateien in den folgenden Unterverzeichnissen von /usr/local erstellt:

VerzeichnisVerzeichnisinhalt
binClientprogramme und -skripten
include/mysqlInclude-Dateien (Header-Dateien)
infoDokumentation im Info-Format
lib/mysqlBibliotheken
libexecDer mysqld-Server
share/mysqlFehlermeldungsdateien
sql-benchBenchmarks und der Crash-Me-Test
varDatenbanken und Logdateien

Innerhalb des Installationsverzeichnisses unterscheidet sich die Struktur einer Quelldistribution wie folgt von der einer Binärdistribution:

  • Der mysqld-Server wird im Verzeichnis libexec statt im Verzeichnis bin installiert.

  • Das Datenverzeichnis ist var und nicht data.

  • mysql_install_db wird im Verzeichnis bin installiert, nicht im Verzeichnis scripts.

  • Die Header-Datei- und Bibliotheksverzeichnisse sind include/mysql und lib/mysql statt include und lib.

Sie können Ihre eigene Binärdistribution aus einer kompilierten Quelldistribution erstellen, indem Sie das Skript scripts/make_binary_distribution aus dem Stammverzeichnis der Quelldistribution ausführen.

2.2. Schnelle Standardinstallation von MySQL

Die nachfolgenden Abschnitte behandeln die Installation von MySQL auf Plattformen, für die wir Pakete im nativen Paketformat der jeweiligen Plattform anbieten. (Dies wird auch als Durchführung einer „Binärinstallation“ bezeichnet.) Binärdistributionen von MySQL sind allerdings auch für viele andere Plattformen verfügbar. In Abschnitt 2.7, „Installation von MySQL auf anderen Unix-ähnlichen Systemen“, finden Sie allgemeine Installationsanweisungen für diese Pakete, die für alle Plattformen gelten.

In Abschnitt 2.1, „Allgemeines zur Installation“, finden Sie weitere Informationen dazu, welche anderen Binärdistributionen verfügbar sind und wie Sie diese erhalten.

2.3. Installation von MySQL unter Windows

Eine native Windows-Distribution von MySQL wird von MySQL AB seit Version 3.21 angeboten. Der Anteil dieser Distributionen an den täglichen MySQL-Downloads ist beträchtlich. In diesem Abschnitt beschreiben wir die Vorgehensweise bei der MySQL-Installation unter Windows.

Das Installationsprogramm der Windows-Version von MySQL installiert in Verbindung mit einem grafischen Konfigurations-Assistenten automatisch MySQL, erstellt eine Optionsdatei, startet den Server und sichert die voreingestellten Benutzerkonten ab.

Wenn Sie eine vorhandene Installation von MySQL aktualisieren, die älter als MySQL 4.1.5 ist, dann müssen Sie die folgenden Schritte durchführen:

  1. Besorgen Sie sich die Distribution und installieren Sie sie.

  2. Konfigurieren Sie, sofern erforderlich, eine Optionsdatei.

  3. Wählen Sie den zu verwendenden Server aus.

  4. Starten Sie den Server.

  5. Konfigurieren Sie Passwörter für die vorgabeseitigen MySQL-Konten.

Diese Vorgehensweise muss auch bei neueren MySQL-Installationen beachtet werden, wenn Sie ein Installationspaket verwenden, das kein Installationsprogramm enthält.

MySQL für Windows ist in verschiedenen Distributionsformaten erhältlich:

  • Es sind Binärdistributionen verfügbar, die ein Setup-Programm enthalten, das alles Erforderliche installiert, sodass Sie den Server sofort starten können. Ein anderes Binärdistributionsformat enthält ein Archiv, das Sie einfach an der Installationsposition entpacken und dann selbst konfigurieren. Detaillierte Informationen finden Sie in Abschnitt 2.3.2, „Auswahl eines Installationspakets“.

  • Die Quelldistribution enthält den gesamten Code und alle Supportdateien zur Erstellung der ausführbaren Dateien mithilfe des Compiler-Systems Visual Studio 2003.

Im Allgemeinen sollten Sie die Binärdistribution verwenden. Sie ist einfacher zu verwenden als die übrigen, und Sie benötigen keine zusätzlichen Tools, um MySQL zum Laufen zu bringen.

Im folgenden Abschnitt wird beschrieben, wie MySQL unter Windows mithilfe einer Binärdistribution installiert wird. Informationen zur Installation einer Quelldistribution finden Sie in Abschnitt 2.8.6, „Windows-Quelldistribution“.

2.3.1. Systemvoraussetzungen für Windows

Um MySQL unter Windows auszuführen, benötigen Sie Folgendes:

  • Ein 32-Bit-Windows-Betriebssystem wie Windows 9x, Me, NT, 2000, XP oder Windows Server 2003.

    Windows NT-basierte Betriebssysteme (NT, 2000, XP, 2003) gestatten Ihnen die Ausführung des MySQL Servers als Dienst. Die Verwendung eines Windows NT-basierten Betriebssystems wird dringend empfohlen. Siehe auch Abschnitt 2.3.12, „Starten von MySQL als Windows-Dienst“.

    Sie sollten MySQL unter Windows generell mithilfe eines Kontos erstellen, das über Administratorrechte verfügt. Andernfalls kann es bei bestimmten Operationen wie der Bearbeitung der Umgebungsvariablen PATH oder dem Zugriff auf den Service Control Manager zu Problemen kommen.

  • TCP/IP-Protokollunterstützung.

  • Eine Kopie der MySQL-Binärdistribution für Windows. Diese kann unter http://dev.mysql.com/downloads/ heruntergeladen werden. Siehe auch Abschnitt 2.1.3, „Woher man MySQL bekommt“.

    Hinweis: Wenn Sie die Distribution via FTP herunterladen, empfehlen wir Ihnen die Verwendung eines geeigneten FTP-Clients mit Wiederaufnahmefunktion für den Download, um eine Dateibeschädigung während des Downloads auszuschließen.

  • Zum Entpacken der Distributionsdatei ein Programm, das .zip-Dateien lesen kann.

  • Ausreichend viel Speicherplatz auf Ihrer Festplatte, um MySQL entpacken und installieren und die Datenbanken entsprechend Ihren Anforderungen erstellen zu können (mindestens 200 Mbyte empfohlen).

Je nachdem, wie Sie MySQL einsetzen wollen, können auch weitere Anforderungen vorliegen:

  • Wenn Sie die Verbindung zum MySQL Server via ODBC herstellen wollen, benötigen Sie einen Connector/ODBC-Treiber. Siehe auch Abschnitt 25.1, „MySQL Connector/ODBC“.

  • Wenn Sie Tabellen benötigen, die größer als 4 Gbyte sind, installieren Sie MySQL auf NTFS oder einem neueren Dateisystem. Vergessen Sie nicht, bei der Erstellung von Tabellen MAX_ROWS und AVG_ROW_LENGTH zu verwenden. Siehe auch Abschnitt 13.1.5, „CREATE TABLE.

2.3.2. Auswahl eines Installationspakets

Bei MySQL 5.1 können Sie zwischen drei Installationspaketen für MySQL unter Windows auswählen. Die folgenden Pakete sind verfügbar:

  • Das Essentials-Paket: Dieses Paket erkennen Sie am Dateinamen mit dem Aufbau mysql-essential-5.1.5-alpha-win32.msi. Es enthält die für die Installation von MySQL unter Windows mindestens erforderlichen Dateien einschließlich des Konfigurations-Assistenten. Nicht enthalten sind optionale Komponenten wie der eingebettete Server und die Benchmark-Reihe.

  • Das Complete-Paket: Dieses Paket erkennen Sie am Dateinamen mit dem Aufbau mysql-5.1.5-alpha-win32.zip. Es enthält alle Dateien, die für eine vollständige Windows-Installation erforderlich sind, einschließlich des Konfigurations-Assistenten. Ferner enthalten sind optionale Komponenten wie der eingebettete Server und die Benchmark-Reihe.

  • Das Noinstall-Archiv: Dieses Paket erkennen Sie am Dateinamen mit dem Aufbau mysql-noinstall-5.1.5-alpha-win32.zip. Es enthält alle im Complete-Paket enthaltenen Dateien mit Ausnahme des Konfigurations-Assistenten. Das Paket umfasst kein automatisiertes Installationsprogramm, muss also manuell installiert und konfiguriert werden.

Für die meisten Benutzer wird das Essentials-Paket empfohlen.

Welches Paket Sie auswählen, wirkt sich auf den nachfolgenden Installationsvorgang aus. Entscheiden Sie sich für das Essentials- oder Complete-Paket, dann finden Sie weitere Informationen in Abschnitt 2.3.3, „Installation von MySQL mit dem automatischen Installer“. Wollen Sie MySQL hingegen aus dem Noinstall-Archiv installieren, dann fahren Sie fort mit Abschnitt 2.3.6, „Installation von MySQL aus einem Noinstall-Zip-Archiv“.

2.3.3. Installation von MySQL mit dem automatischen Installer

Neue MySQL-Benutzer können den MySQL-Installations-Assistenten und den MySQL-Konfigurations-Assistenten zur Installation von MySQL unter Windows verwenden. Diese Assistenten sind so aufgebaut, dass die MySQL-Installation und -Konfiguration neuen Benutzern den sofortigen Einsatz von MySQL ermöglicht.

Die MySQL-Installations- und MySQL-Konfigurations-Assistenten sind Bestandteil des Essentials- und des Complete-Pakets von MySQL. Sie werden für die meisten MySQL-Standardinstallationen empfohlen. Ausnahmen betreffen Benutzer, die mehrere MySQL-Instanzen auf demselben Serverhost installieren wollen, und fortgeschrittene Benutzer, die volle Kontrolle über die Serverkonfiguration wünschen.

2.3.4. Verwendung des MySQL-Installations-Assistenten

2.3.4.1. Einführung in den Installations-Assistenten

Der MySQL-Installations-Assistent ist ein Installationsprogramm für den MySQL Server, das die aktuellen Installer-Technologien von Microsoft Windows nutzt. In Verbindung mit dem MySQL-Konfigurations-Assistenten ermöglicht der MySQL-Installations-Assistent einem Benutzer die Installation und Konfiguration eines MySQL Servers, der direkt nach der Installation einsatzbereit ist.

Der MySQL-Installations-Assistent ist das Standardinstallationsprogramm für alle MySQL Server-Distributionen ab Version 4.1.5. Benutzer vorheriger MySQL-Versionen müssen ihre vorhandenen MySQL-Installationen manuell herunterfahren und entfernen, bevor sie MySQL mit dem MySQL-Installations-Assistenten installieren. In Abschnitt 2.3.4.7, „Upgrade von MySQL mit dem Installations-Assistenten“, finden Sie weitere Informationen zur Aktualisierung einer früheren Version.

In den aktuellen Windows-Versionen hat Microsoft eine verbesserte Version von MSI (Microsoft Windows Installer) implementiert. In Windows 2000, Windows XP und Windows Server 2003 ist MSI der De-facto-Standard für die Anwendungsinstallation. Der MySQL-Installations-Assistent nutzt diese Technologie, um den Installationsprozess reibungsloser und flexibler zu gestalten.

Die MSI-Engine wurde mit der Veröffentlichung von Windows XP aktualisiert. Wenn Sie eine vorherige Windows-Version einsetzen, finden Sie in dem Microsoft Knowledge Base-Artikel unter der Adresse http://support.microsoft.com/default.aspx?scid=kb;EN-US;292539 Informationen zum Upgrade auf die aktuelle Version der MSI-Engine.

Ferner hat Microsoft kürzlich das WiX-Toolkit (Windows Installer XML) vorgestellt. Hierbei handelt es sich um das erste offizielle Open-Source-Projekt von Microsoft. Wir verwenden WiX nun auch, denn erstens ist es ein Open-Source-Projekt, und zweitens gestattet es die Handhabung des gesamten Windows-Installationsvorgangs auf flexible Weise unter Verwendung von Skripten.

Die Optimierung des MySQL-Installations-Assistenten steht und fällt mit der Unterstützung und dem Feedback solcher Benutzer wie Ihnen. Wenn Sie feststellen, dass im MySQL-Installations-Assistenten etwas fehlt, das für Sie sehr wichtig wäre, oder einen Bug entdecken, melden Sie dies bitte in unserer Bugdatenbank. Hinweise hierzu finden Sie in Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“.

2.3.4.2. Download und Start des MySQL-Installations-Assistenten

Die MySQL-Installationspakete können unter http://dev.mysql.com/downloads/ heruntergeladen werden. Wenn das von Ihnen heruntergeladene Paket in einem ZIP-Archiv gespeichert ist, müssen Sie dieses zunächst entpacken.

Der Vorgang zum Starten des Assistenten hängt vom Inhalt des heruntergeladenen Installationspakets ab. Enthält dieses eine Datei namens setup.exe, dann doppelklicken Sie darauf, um den Installationsvorgang zu starten. Enthält das Paket hingegen eine .msi-Datei, dann doppelklicken Sie darauf, um den Installationsvorgang zu starten.

2.3.4.3. Auswahl eines Installationstyps

Es sind drei Installationstypen vorhanden: Typical (Standard), Complete (Vollständig) und Custom (Benutzerdefiniert).

Bei der Installationsmethode Typical werden der MySQL Server, der Befehlszeilenclient mysql und die befehlszeilenbasierten Hilfsprogramme installiert. Zu den Befehlszeilenclients und Hilfsprogrammen gehören mysqldump, myisamchk und verschiedene weitere Programme zur Verwaltung des MySQL Servers.

Die Installationsmethode Complete installiert alle Komponenten, die im Installationspaket enthalten sind. Das vollständige Installationspaket umfasst Komponenten wie die eingebettete Serverbibliothek, die Benchmark-Reihe, Support-Skripten und die Dokumentation.

Bei der Installationsmethode Custom haben Sie vollständige Kontrolle darüber, welche Pakete installiert werden und wie der Installationspfad aussieht. Weitere Informationen zur benutzerdefinierten Installation finden Sie unter Abschnitt 2.3.4.4, „Der Dialog zur benutzerspezifischen Installation“.

Wenn Sie sich für die Installationsmethode Typical oder Complete entschieden haben und auf die Schaltfläche Next klicken, wird ein Fenster angezeigt, in dem Sie die gewählten Optionen überprüfen und die Installation dann starten können. Wenn Sie hingegen die Methode Custom auswählen und dann auf die Schaltfläche Next klicken, wird nachfolgend das Dialogfeld für die benutzerdefinierte Installation aufgerufen, welches in Abschnitt 2.3.4.4, „Der Dialog zur benutzerspezifischen Installation“, beschrieben wird.

2.3.4.4. Der Dialog zur benutzerspezifischen Installation

Wenn Sie den Installationspfad oder bestimmte Komponenten ändern wollen, die vom MySQL-Installations-Assistenten installiert werden, wählen Sie die Installationsmethode Custom.

Alle verfügbaren Komponenten werden dann in einer Baumstruktur links im Installationsdialog angezeigt. Komponenten, die nicht installiert werden, sind durch ein rotes X gekennzeichnet, während für die Installation gewählten Komponenten ein graues Symbol aufweisen. Um den Installationsstatus einer Komponente umzuschalten, klicken Sie auf das Symbol der betreffenden Komponente und wählen die gewünschte Option aus der erscheinenden Dropdown-Liste.

Sie können den vorgegebenen Installationspfad ändern, indem Sie auf die Schaltfläche Change... rechts neben dem angezeigten Installationspfad klicken.

Wenn Sie die zu installierenden Komponenten und den Pfad gewählt haben, klicken Sie auf die Schaltfläche Next, um den Bestätigungsdialog anzuzeigen.

2.3.4.5. Der Bestätigungsdialog

Wenn Sie eine Installationsmethode und ggf. die zu installierenden Komponenten gewählt haben, schreiten Sie fort zum Bestätigungsdialog. Installationsmethode und Pfad werden nun zur Bestätigung angezeigt.

Wenn die angezeigten Einstellungen korrekt sind, klicken Sie auf die Schaltfläche Install, um MySQL zu installieren. Wenn Sie Ihre Einstellungen noch einmal ändern wollen, klicken Sie auf die Schaltfläche Back. Um den MySQL-Installations-Assistenten zu verlassen, ohne MySQL zu installieren, klicken Sie auf die Schaltfläche Cancel.

Wenn die Installation abgeschlossen ist, können Sie sich auf der MySQL-Website registrieren. Wenn Sie registriert sind, können Sie Mitteilungen an die MySQL-Foren unter forums.mysql.com schicken, Bugs unter bugs.mysql.com melden und unseren Newsletter abonnieren. Der Abschlussbildschirm des Installationsprogramms zeigt eine Zusammenfassung der Installation und erlaubt Ihnen den Aufruf des MySQL-Konfigurations-Assistenten, mit dem Sie eine Konfigurationsdatei erstellen, den MySQL-Dienst installieren und die Sicherheitseinstellungen konfigurieren können.

2.3.4.6. Änderungen, die der MySQL-Installations-Assistent durchführt

Wenn Sie auf die Schaltfläche Install klicken, startet der MySQL-Installations-Assistent den Installationsvorgang und nimmt bestimmte Änderungen an Ihrem System vor, die in den nachfolgenden Abschnitten beschrieben sind.

Änderungen in der Registrierung

Der MySQL-Installations-Assistent erstellt bei Auswahl der Standardinstallation einen Schlüssel in der Windows-Registrierung. Dieser befindet sich unter HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB.

Der MySQL-Installations-Assistent richtet einen Schlüssel ein, der nach der Hauptversion des installierten Servers benannt ist (z. B. MySQL Server 5.1). Dieser enthält zwei Zeichenfolgenwerte namens Location und Version. Die Zeichenfolge Location enthält den Pfad zum Installationsverzeichnis. Bei einer Standardinstallation heißt der Wert C:\Programme\MySQL\MySQL Server 5.1\. Die Zeichenfolge Version enthält die Release-Nummer. Wird etwa MySQL Server 5.1.5-alpha installiert, dann enthält der Schlüssel den Wert 5.1.5-alpha.

Diese Registrierungsschlüssel ermöglichen es externen Programmen, das Installationsverzeichnis des MySQL Servers zu ermitteln; hierdurch wird eine zeitaufwändige vollständige Durchsuchung der Festplatte zur Ermittlung des Installationspfads des MySQL Servers unnötig. Die Registrierungsschlüssel sind für die Ausführung des Servers nicht erforderlich und werden, wenn Sie MySQL aus dem Noinstall-Archiv installieren, auch nicht erstellt.

Änderungen im Startmenü

Der MySQL-Installations-Assistent erstellt im Windows-Menü Start einen neuen Eintrag in einem MySQL-Menü, welches nach der installierten MySQL-Hauptversion benannt ist. Installieren Sie beispielsweise MySQL 5.1, dann erstellt der Installations-Assistent einen Abschnitt namens MySQL Server 5.1 im Menü Start.

In diesem neuen Abschnitt im Menü Start werden die folgenden Einträge eingerichtet:

  • MySQL Command Line Client: Dies ist eine Verknüpfung mit dem Befehlszeilenclient mysql, die so konfiguriert ist, dass eine Verbindung als Benutzer root hergestellt wird. Beim Aufruf fordert die Verknüpfung die Eingabe eines root-Benutzerpassworts an, wenn Sie eine Verbindung herstellen.

  • MySQL Server Instance Config Wizard: Dies ist eine Verknüpfung zum MySQL-Konfigurations-Assistenten. Verwenden Sie diese Verknüpfung zur Konfiguration eines neu installierten oder zur Neukonfiguration eines vorhandenen Servers.

  • MySQL Documentation: Dies ist eine Verknüpfung zur Dokumentation zum MySQL Server, die lokal im Installationsverzeichnis des MySQL Servers gespeichert ist. Die Option ist nicht verfügbar, wenn der MySQL Server aus dem Essentials-Paket installiert wurde.

Änderungen am Dateisystem

Der MySQL-Installations-Assistent installiert den MySQL 5.1 Server standardmäßig im Verzeichnis C:\Programme\MySQL\MySQL Server 5.1. Hierbei ist Programme das Standardverzeichnis für Anwendungen auf Ihrem System und 5.1 die Hauptversion Ihres MySQL Servers. Dies ist das empfohlene Verzeichnis für den MySQL Server. Es ersetzt die vormalige Standardposition C:\mysql.

Standardmäßig werden alle MySQL-Anwendungen in einem gemeinsamen Verzeichnis in C:\Programme\MySQL gespeichert. Hierbei ist Programme in Ihrer Windows-Installation das Standardverzeichnis für Anwendungen. Bei einer typischen MySQL-Installation auf einem Entwicklersystem könnte dies wie folgt aussehen:

C:\Programme\MySQL\MySQL Server 5.1
C:\Programme\MySQL\MySQL Administrator 1.0
C:\Programme\MySQL\MySQL Query Browser 1.0

Dieser Ansatz erleichtert Verwaltung und Pflege aller auf einem System installierten MySQL-Anwendungen.

2.3.4.7. Upgrade von MySQL mit dem Installations-Assistenten

Der MySQL-Installations-Assistent kann Server-Upgrades automatisch mithilfe der MSI-Aktualisierungsfunktionen durchführen. Das bedeutet, dass Sie eine vorhandene Installation nicht mehr manuell entfernen müssen, bevor Sie einen neuen Release installieren. Das Installationsprogramm beendet und entfernt den vorhandenen MySQL-Dienst selbsttätig, bevor die neue Version installiert wird.

Automatische Upgrades sind nur dann verfügbar, wenn Sie Aktualisierungen zwischen Installationen durchführen, die die gleiche Haupt- und Unterversionsnummern aufweisen. So kann etwa ein automatisches Upgrade von MySQL 4.1.5 auf MySQL 4.1.6 erfolgen, nicht jedoch von MySQL 5.0 auf MySQL 5.1.

Siehe auch Abschnitt 2.3.15, „Upgrade von MySQL unter Windows“.

2.3.5. Verwendung des Konfigurations-Assistenten

2.3.5.1. Einführung in den Konfigurations-Assistenten

Der MySQL-Konfigurations-Assistent hilft Ihnen bei der Automatisierung der Serverkonfiguration unter Windows. Der Konfigurations-Assistent erstellt eine benutzerdefinierte Datei my.ini. Hierzu stellt er Ihnen eine Reihe von Fragen und verknüpft Ihre Antworten dann mit einer Vorlage, um eine Datei my.ini zu erzeugen, die für Ihre Installation maßgeschneidert ist.

Der MySQL-Konfigurations-Assistent ist Bestandteil des MySQL 5.1-Servers und derzeit nur für Windows-Benutzer verfügbar.

Der MySQL-Konfigurations-Assistent ist zu einem Großteil Ergebnis des Feedbacks, das MySQL AB über viele Jahre hinweg von Benutzern erhalten hat. Sollten Sie feststellen, dass eine für Sie wesentliche Funktionalität fehlt, dann melden Sie dies bitte in unserer Bugdatenbank. Hinweise zur Vorgehensweise finden Sie in Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“.

2.3.5.2. Start des MySQL-Konfigurations-Assistenten

Der MySQL-Konfigurations-Assistent wird normalerweise über den MySQL-Installations-Assistenten gestartet, wenn dieser beendet wird. Sie können den Konfigurations-Assistenten aber auch durch Auswahl des Eintrags MySQL Server Instance Config Wizard im Abschnitt MySQL des Windows-Menüs Start aufrufen.

Alternativ navigieren Sie zum Verzeichnis bin Ihrer MySQL-Installation und rufen die Datei MySQLInstanceConfig.exe direkt auf.

2.3.5.3. Auswahl einer Wartungsoption

Wenn der MySQL-Konfigurations-Assistent eine vorhandene Datei my.ini erkennt, können Sie wahlweise den vorhandenen Server umkonfigurieren oder die Serverinstanz durch Löschen von my.ini entfernen und den MySQL-Dienst beenden und entfernen.

Wenn Sie den vorhandenen Server umkonfigurieren wollen, wählen Sie die Option Re-configure Instance und klicken dann auf die Schaltfläche Next. Ihre vorhandene Datei my.ini wird nun in mytimestamp.ini.bak umbenannt, wobei timestamp ein Zeitstempel mit dem Datum und der Uhrzeit des Zeitpunkts ist, an dem die vorhandene my.ini erstellt worden ist. Wenn Sie die vorhandene Serverinstanz entfernen wollen, wählen Sie die Option Remove Instance und klicken dann auf die Schaltfläche Next.

Wählen Sie die Option Remove Instance, dann wird ein Bestätigungsfenster aufgerufen. Klicken Sie auf die Schaltfläche Execute. Der MySQL-Konfigurations-Assistent beendet und entfernt nun den MySQL-Dienst. Nachfolgend löscht er die Datei my.ini. Die Serverinstallation und ihr Ordner data werden nicht entfernt.

Wenn Sie die Option Re-configure Instance auswählen, wird das Dialogfeld Configuration Type angezeigt. Hier können Sie den Installationstyp auswählen, den Sie konfigurieren wollen.

2.3.5.4. Auswahl eines Konfigurationstyps

Wenn Sie den MySQL-Konfigurations-Assistenten für eine neue MySQL-Installation aufrufen oder die Option Re-configure Instance für eine vorhandene Installation auswählen, wird das Dialogfeld Configuration Type aufgerufen.

Es stehen zwei Konfigurationsmethoden zur Verfügung: Detailed Configuration und Standard Configuration. Die Option Standard Configuration ist für Neubenutzer vorgesehen, die direkt mit MySQL arbeiten wollen, ohne sich vorher Gedanken zur Serverkonfiguration machen zu müssen. Die Option Detailed Configuration ist hingegen für fortgeschrittene Benutzer gedacht, die eine exaktere Kontrolle über die Serverkonfiguration wünschen.

Wenn Sie noch nicht mit MySQL gearbeitet haben und einen Server benötigen, der als Entwicklersystem für genau einen Benutzer vorgesehen ist, dann ist Standard Configuration die richtige Wahl für Ihre Bedürfnisse. Wenn Sie die Option Standard Configuration wählen, stellt der MySQL-Konfigurations-Assistent alle Konfigurationsoptionen mit Ausnahme von Service Options (Dienstoptionen) und Security Options (Sicherheitsoptionen) automatisch ein.

Unter Umständen werden bei Auswahl von Standard Configuration Optionseinstellungen vorgenommen, die mit Systemen, auf denen bereits MySQL-Installationen vorhanden sind, nicht kompatibel sind. Ist auf dem System, auf dem Sie eine MySQL-Installation konfigurieren wollen, bereits eine andere MySQL-Installation vorhanden, dann wird die Auswahl Detailed Configuration empfohlen.

Um die Auswahl Standard Configuration fertig zu stellen, lesen Sie bitte die Abschnitte zu Service Options und Security Options in Abschnitt 2.3.5.11, „Der Dialog zu Dienstoptionen“, bzw. Abschnitt 2.3.5.12, „Der Dialog zu Sicherheitsoptionen“.

2.3.5.5. Der Dialog zum Servertyp

Sie können zwischen drei verschiedenen Servertypen wählen. Welchen Servertyp Sie wählen, wirkt sich auf die Entscheidungen aus, die der MySQL-Konfigurations-Assistent in den Bereichen Speicher-, Festplatten- und Prozessornutzung trifft.

  • Developer Machine: Diese Option ist die beste Wahl für eine normale Desktop-Workstation, auf der MySQL nur für den privaten Einsatz vorgesehen ist. Es wird vorausgesetzt, dass viele andere Desktopanwendungen ausgeführt werden. Der MySQL Server wird deswegen für eine minimale Nutzung der Systemressourcen konfiguriert.

  • Server Machine: Wählen Sie diese Option für ein Serversystem, bei dem der MySQL Server gemeinsam mit anderen Serveranwendungen wie FTP-, Mail- oder Webservern ausgeführt wird. Der MySQL Server wird in diesem Fall für eine moderate Nutzung der Systemressourcen konfiguriert.

  • Dedicated MySQL Server Machine: Die Option wählen Sie bei einem Serversystem, auf dem ausschließlich der MySQL Server läuft. Es wird vorausgesetzt, dass keine anderen Anwendungen ausgeführt werden. Der MySQL Server wird deswegen für die Nutzung aller Systemressourcen konfiguriert.

2.3.5.6. Der Dialog zur Datenbankverwendung

Das Dialogfeld Database Usage erlaubt Ihnen die Angabe von Speicher-Engines, die Sie bei der Erstellung von MySQL-Tabellen voraussichtlich verwenden werden. Die hier gewählte Option bestimmt, ob die InnoDB-Speicher-Engine verfügbar ist und welcher Anteil der Serverressourcen für InnoDB bereitgestellt wird.

  • Multifunctional Database: Diese Option aktiviert sowohl die InnoDB- als auch die MyISAM-Speicher-Engine und teilt die verfügbaren Ressourcen gleichmäßig zwischen diesen beiden auf. Die Option ist für Benutzer empfehlenswert, die beide Speicher-Engines regelmäßig verwenden.

  • Transactional Database Only: Diese Option aktiviert sowohl die InnoDB- als auch die MyISAM-Speicher-Engine, reserviert den überwiegenden Teil der Serverressourcen jedoch für die InnoDB-Engine. Diese Option ist für Benutzer gedacht, die InnoDB fast ausschließlich verwenden und MyISAM nur in sehr seltenen Fällen einsetzen.

  • Non-Transactional Database Only: Diese Option deaktiviert die InnoDB-Speicher-Engine vollständig und weist die gesamten Serverressourcen der MyISAM-Engine zu. Sie wird Benutzern empfohlen, die InnoDB überhaupt nicht verwenden.

2.3.5.7. Der InnoDB-Tablespace-Dialog

Manche Benutzer wollen die InnoDB-Tablespace-Dateien an einer anderen Position als im MySQL Serverdatenverzeichnis speichern. Dies kann wünschenswert sein, wenn Ihr System über ein Speichergerät mit höherer Kapazität oder mehr Leistung verfügt (z. B. ein RAID-Speichersystem).

Um die Standardposition der InnoDB-Tablespace-Dateien zu ändern, wählen Sie ein anderes Laufwerk aus der Dropdown-Liste mit den Laufwerksbuchstaben aus und stellen dann in der Dropdown-Liste mit den Pfaden einen anderen Pfad ein. Um einen benutzerdefinierten Pfad zu erstellen, klicken Sie auf die Schaltfläche ....

Wenn Sie die Konfiguration eines vorhandenen Servers modifizieren, müssen Sie auf die Schaltfläche Modify klicken, bevor Sie den Pfad ändern. In dieser Situation müssen Sie die vorhandenen Tablespace-Dateien manuell an die neue Position verschieben, bevor Sie den Server starten.

2.3.5.8. Der Dialog zu gleichzeitigen Verbindungen

Um zu verhindern, dass der Server keine Ressourcen mehr zugewiesen bekommt, ist es wichtig, die Anzahl gleichzeitiger Verbindungen zum MySQL Server zu begrenzen. Das Dialogfeld Concurrent Connections ermöglicht Ihnen die Angabe der erwarteten Auslastung Ihres Servers und stellt die Anzahl gleichzeitiger Verbindungen entsprechend ein. Es ist ferner möglich, die Anzahl gleichzeitiger Verbindungen manuell zu ändern.

  • Decision Support (DSS)/OLAP: Wählen Sie diese Option, wenn Ihr Server keine hohe Anzahl gleichzeitiger Verbindungen unterstützen muss. Die maximale Anzahl von Verbindungen wird in diesem Fall auf 100 gesetzt, wobei ein Durchschnitt von 20 Verbindungen erwartet wird.

  • Online Transaction Processing (OLTP): Wählen Sie diese Option, wenn Ihr Server eine große Zahl gleichzeitiger Verbindungen unterstützen muss. Die maximale Anzahl der Verbindungen wird hier auf 500 festgelegt.

  • Manual Setting: Wählen Sie diese Option, wenn Sie die maximale Anzahl gleichzeitiger Verbindungen zum Server manuell einstellen wollen. Wählen Sie die Anzahl gleichzeitiger Verbindungen über die Dropdown-Liste aus oder geben Sie den gewünschten Wert direkt in das Dropdown-Feld ein, sofern er nicht in der Liste enthalten ist.

2.3.5.9. Der Dialog zu Netzwerk- und Strict-Modus-Optionen

Im Dialogfeld Networking Options aktivieren oder deaktivieren Sie die TCP/IP-Netzwerkunterstützung und konfigurieren die Portnummer, die zur Verbindung mit dem MySQL Server verwendet wird.

Standardmäßig ist die TCP/IP-Netzwerkunterstützung aktiviert. Um sie zu deaktivieren, entfernen Sie die Markierung des Kontrollkästchen Enable TCP/IP Networking.

Standardmäßig ist Port 3306 gewählt. Um den für den MySQL-Zugriff verwendeten Port zu ändern, wählen Sie im Dropdown-Feld eine neue Portnummer aus und geben die gewünschte Nummer direkt in das Dropdown-Feld ein. Wird die eingetragene Portnummer bereits verwendet, dann werden Sie aufgefordert, Ihre Eingabe zu bestätigen.

Über Server SQL Mode können Sie den strikten SQL-Servermodus aktivieren oder deaktivieren. Bei aktiviertem striktem Modus (Standard) verhält sich MySQL ähnlich wie andere Datenbankmanagementsysteme. Wenn Sie Anwendungen ausführen, die auf das vorherige „nachsichtige“ Verhalten von MySQL angewiesen sind, müssen Sie diese Anwendungen entweder anpassen oder den strikten Modus deaktivieren. Weitere Informationen finden Sie in Abschnitt 5.2.5, „Der SQL-Modus des Servers“.

2.3.5.10. Der Zeichensatzdialog

Der MySQL Server unterstützt mehrere Zeichensätze. In diesem Zusammenhang ist es möglich, einen Standardzeichensatz einzustellen, der für alle Tabellen, Spalten und Datenbanken verwendet wird, soweit nichts anderes explizit festgelegt ist. Im Dialogfeld Character Set können Sie den Standardzeichensatz des MySQL Servers ändern.

  • Standard Character Set: Wählen Sie diese Option, wenn Sie latin1 als Standardzeichensatz verwenden wollen. latin1 wird für Englisch und viele westeuropäische Sprachen verwendet.

  • Best Support For Multilingualism: Wählen Sie diese Option, wenn Sie utf8 als Standardzeichensatz verwenden wollen. Dies ist ein Unicode-Zeichensatz, der Zeichen vieler verschiedener Sprachen enthält.

  • Manual Selected Default Character Set/ Collation: Wählen Sie diese Option, wenn Sie den Standardzeichensatz des Servers manuell einstellen wollen. Wählen Sie den gewünschten Zeichensatz aus der angezeigten Dropdown-Liste.

2.3.5.11. Der Dialog zu Dienstoptionen

Auf Windows NT-basierten Plattformen kann der MySQL Server als Windows-Dienst installiert werden. Wenn der Server auf diese Weise installiert wird, kann er beim Systemstart automatisch gestartet werden. Zudem ist auch ein automatischer Neustart des Dienstes durch Windows nach einem Ausfall möglich.

Der MySQL-Konfigurations-Assistent installiert den MySQL Server standardmäßig als Dienst mit dem Dienstnamen MySQL. Wollen Sie den Dienst nicht installieren, dann deaktivieren Sie das Kontrollkästchen Install As Windows Service . Sie können den Namen des Dienstes ändern, indem Sie einen anderen Namen im vorhandenen Dropdown-Feld auswählen oder einen neuen Dienstnamen direkt in das Feld eintragen.

Um den MySQL Server als Dienst zu installieren, der aber beim Systemstart nicht automatisch gestartet wird, deaktivieren Sie das Kontrollkästchen Launch the MySQL Server Automatically .

2.3.5.12. Der Dialog zu Sicherheitsoptionen

Es wird dringend empfohlen, ein root-Passwort für Ihren MySQL Server einzurichten. Der MySQL-Konfigurations-Assistent fordert Sie standardmäßig dazu auf. Wollen Sie kein root-Passwort erstellen, dann deaktivieren Sie das Kontrollkästchen Modify Security Settings .

Um das root-Passwort einzurichten, geben Sie das gewünschte Passwort in die Felder New root password und Confirm ein. Wenn Sie einen vorhandenen Server umkonfigurieren, müssen Sie das vorhandene root-Passwort in das Feld Current root password eingeben.

Um root-Anmeldungen über das Netzwerk zu verhindern, markieren Sie das Kontrollkästchen Root may only connect from localhost. Dies erhöht die Sicherheit Ihres root-Kontos.

Um ein anonymes Benutzerkonto einzurichten, markieren Sie das Kontrollkästchen Create An Anonymous Account . Die Erstellung eines solchen Kontos kann die Serversicherheit verringern und Probleme mit der Anmeldung und mit Berechtigungen verursachen. Aus diesem Grund wird davon abgeraten.

2.3.5.13. Der Bestätigungsdialog

Das letzte Dialogfeld im MySQL-Konfigurations-Assistent ist Confirmation Dialog. Um den Konfigurationsvorgang zu starten, klicken Sie auf die Schaltfläche Execute. Wenn Sie zu einem der vorherigen Dialogfelder zurückkehren wollen, klicken Sie auf die Schaltfläche Back. Um den MySQL-Konfigurations-Assistenten zu verlassen, ohne MySQL zu konfigurieren, klicken Sie auf die Schaltfläche Cancel.

Wenn Sie auf die Schaltfläche Execute geklickt haben, führt der MySQL-Konfigurations-Assistent eine Reihe von Aufgaben aus, deren Fortschritt auf dem Bildschirm angezeigt wird.

Der MySQL-Konfigurations-Assistent ermittelt zunächst die Konfigurationsdateioptionen basierend auf Ihren Einstellungen. Hierzu verwendet er eine Vorlage, die von Entwicklern und Technikern bei MySQL AB erstellt wurde. Diese Vorlage heißt my-template.ini und befindet sich in Ihrem Serverinstallationsverzeichnis.

Der Konfigurations-Assistent schreibt diese Optionen dann in eine Datei namens my.ini. Die endgültige Position von my.ini wird neben der Aufgabe Write configuration file angezeigt.

Wenn Sie angegeben haben, dass ein Dienst für den MySQL Server eingerichtet werden soll, erstellt und startet der MySQL-Konfigurations-Assistent diesen Dienst. Konfigurieren Sie einen vorhandenen Dienst um, dann startet der MySQL-Konfigurations-Assistent den Dienst neu, um Ihre Konfigurationsänderungen anzuwenden.

Haben Sie angegeben, dass ein root-Passwort eingerichtet werden soll, dann stellt der MySQL-Konfigurations-Assistent eine Verbindung mit dem Server her, richtet Ihr neues root-Passwort ein und übernimmt ggf. weitere von Ihnen gewählte Sicherheitseinstellungen.

Wenn der MySQL-Konfigurations-Assistent seine Aufgaben abgeschlossen hat, wird eine Zusammenfassung angezeigt. Klicken Sie auf die Schaltfläche Finish, um den MySQL-Konfigurations-Assistenten zu beenden.

2.3.5.14. Speicherort der Datei my.ini

Der MySQL-Konfigurations-Assistent legt die Datei my.ini im Installationsverzeichnis des MySQL Servers ab. Dies erleichtert die Zuordnung von Konfigurationsdateien zu bestimmten Serverinstanzen.

Um sicherzustellen, dass der MySQL Server weiß, wo er nach der Datei my.ini suchen muss, wird im Zuge der Dienstinstallation ein Argument ähnlich dem folgenden an den MySQL Server übergeben: --defaults-file="C:\Programme\MySQL\MySQL Server 5.1\my.ini". Hierbei wird C:\Programme\MySQL\MySQL Server 5.1 durch den Installationspfad des MySQL Servers ersetzt.

Die Option --defaults-file weist den MySQL Server an, beim Start die Konfigurationsoptionen aus der angegebenen Datei auszulesen.

2.3.5.15. Editieren der Datei my.ini

Um die Datei my.ini zu ändern, öffnen Sie sie mit einem Texteditor und nehmen die erforderlichen Änderungen vor. Sie können die Serverkonfiguration auch mit dem Hilfsprogramm MySQL Administrator bearbeiten.

MySQL-Clients und Hilfsprogramme wie die Befehlszeilenclients mysql und mysqldump können die Datei my.ini im Serverinstallationsverzeichnis nicht lokalisieren. Um die Client- und Hilfsanwendungen zu konfigurieren, erstellen Sie eine neue Datei my.ini im Verzeichnis C:\WINDOWS bzw. C:\WINNT (je nachdem, welches Verzeichnis für Ihre Windows-Version gültig ist).

2.3.6. Installation von MySQL aus einem Noinstall-Zip-Archiv

Benutzer, die eine Installation aus dem Noinstall-Paket vornehmen, können die Anweisungen in diesem Abschnitt zur manuellen Installation von MySQL verwenden. Die Installation von MySQL aus einem ZIP-Archiv erfolgt mit den nachfolgenden Schritten:

  1. Extrahieren Sie das Archiv in das gewünschte Installationsverzeichnis.

  2. Erstellen Sie die Optionsdatei.

  3. Wählen Sie den MySQL Server-Typ aus.

  4. Starten Sie den MySQL Server.

  5. Schützen Sie die standardmäßig eingerichteten Benutzerkonten.

Die Abläufe werden in den nachfolgenden Abschnitten beschrieben.

2.3.7. Entpacken des Installationsarchivs

So installieren Sie MySQL manuell:

  1. Wenn Sie ein Upgrade von einer vorherigen Version durchführen wollen, lesen Sie bitte Abschnitt 2.3.15, „Upgrade von MySQL unter Windows“, bevor Sie den Upgradevorgang beginnen.

  2. Verwenden Sie ein Windows NT-basiertes Betriebssystem (z. B. Windows NT, Windows 2000, Windows XP oder Windows Server 2003), dann stellen Sie sicher, dass Sie als Benutzer mit Administratorrechten angemeldet sind.

  3. Wählen Sie ein Installationsverzeichnis aus. Traditionell wird der MySQL Server im Verzeichnis C:\mysql installiert. Der MySQL-Installations-Assistent installiert MySQL hingegen in C:\Programme\MySQL. Wenn Sie MySQL nicht in C:\mysql installieren, müssen Sie den Pfad zum Installationsverzeichnis während des Systemstarts oder in einer Optionsdatei angeben. Siehe auch Abschnitt 2.3.8, „Anlegen einer Optionsdatei“.

  4. Verwenden Sie ein ZIP-kompatibles Programm, um das Installationsarchiv in das gewählte Verzeichnis zu extrahieren. Bei Verwendung bestimmter Programme wird das Archiv in einen Ordner im Installationsverzeichnis extrahiert. Sollte dies bei Ihrem Programm der Fall sein, dann verschieben Sie den gesamten Inhalt des Unterordners in das gewählte Installationsverzeichnis.

2.3.8. Anlegen einer Optionsdatei

Wenn Sie für die Ausführung des Servers bestimmte Startoptionen angeben wollen, können Sie dies über die Befehlszeile tun oder sie in einer Optionsdatei ablegen. Sollen die Optionen bei jedem Serverstart verwendet werden, dann ist die Verwendung einer Optionsdatei zur Angabe Ihrer MySQL-Konfiguration praktischer. Dies gilt insbesondere unter den folgenden Umständen:

  • Die Positionen von Installations- oder Datenverzeichnis unterscheiden sich von den Standardvorgaben (C:\Programme\MySQL\MySQL Server 5.1 und C:\Programme\MySQL\MySQL Server 5.1\data).

  • Sie müssen die Servereinstellungen optimieren.

Wenn der MySQL Server unter Windows gestartet wird, sucht er in zwei Dateien nach Optionseinstellungen: in der Datei my.ini im Windows-Verzeichnis und der Datei C:\my.cnf. Das Windows-Verzeichnis heißt normalerweise C:\WINDOWS, C:\WINNT o. ä. Sie können die exakte Position der Umgebungsvariable WINDIR entnehmen. Hierzu geben Sie den folgenden Befehl ein:

C:\> echo %WINDIR%

MySQL sucht zunächst in der Datei my.ini und nachfolgend in my.cnf nach Optionseinstellungen. Allerdings sollten Sie, um Verwirrung zu vermeiden, am besten nur eine Datei verwenden. Verwendet Ihr PC einen Boot-Loader, bei dem C: nicht das Startlaufwerk ist, dann können Sie ohnehin nur die Datei my.ini benutzen. Unabhängig von der gewählten Option muss es sich in jedem Fall um eine unverschlüsselte Textdatei handeln.

Sie können auch die Beispieloptionsdateien verwenden, die zum Umfang Ihrer MySQL-Distribution gehören. Suchen Sie im Installationsverzeichnis nach Dateien wie my-small.cnf, my-medium.cnf, my-large.cnf und my-huge.cnf, die Sie umbenennen und als Grundlage für Ihre Konfigurationsdatei in das passende Verzeichnis kopieren können.

Eine Optionsdatei kann mit jedem Texteditor (z. B. dem Windows-Editor) erstellt und bearbeitet werden. Ist MySQL beispielsweise in E:\mysql installiert und befindet sich das Datenverzeichnis in E:\mydata\data, dann können Sie eine Optionsdatei erstellen, die einen Abschnitt [mysqld] enthält. In diesem geben Sie die folgenden Werte für die Parameter basedir und datadir an:

[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=E:/mydata/data

Beachten Sie, dass Windows-Pfadnamen in Optionsdateien nicht mit Backslashs, sondern mit normalen Schrägstrichen angegeben werden. Wenn Sie Backslashs (umgekehrte Schrägstriche) verwenden, müssen Sie sie doppelt angeben:

[mysqld]
# set basedir to your installation path
basedir=E:\\mysql
# set datadir to the location of your data directory
datadir=E:\\mydata\\data

Unter Windows legt das MySQL-Installationsprogramm das Datenverzeichnis direkt im Installationsverzeichnis von MySQL ab. Wenn Sie das Datenverzeichnis an eine andere Position verschieben wollen, sollten Sie den gesamten Inhalt des Verzeichnisses data an die neue Position kopieren. Befindet sich MySQL etwa in C:\Programme\MySQL\MySQL Server 5.1, dann ist das Datenverzeichnis standardmäßig C:\Programme\MySQL\MySQL Server 5.1\data. Wollen Sie stattdessen E:\mydata als Datenverzeichnis verwenden, dann müssen Sie zweierlei tun:

  1. Sie verschieben das gesamte Verzeichnis data und alle darin enthaltenen Daten von C:\Programme\MySQL\MySQL Server 5.1\data nach E:\mydata.

  2. Sie verwenden die Option --datadir, um die neue Position des Datenverzeichnisses bei jedem Serverstart anzugeben.

2.3.9. Auswahl des MySQL Server-Typs

Die folgende Tabelle zeigt die in MySQL 5.1 für Windows verfügbaren Server:

BinärdateiBeschreibung
mysqld-debugMit allen Debugging-Funktionen und automatischer Überprüfung der Speicherzuordnung kompiliert. Unterstützt auch InnoDB- und BDB-Tabellen.
mysqldOptimierte Binärdatei mit InnoDB-Unterstützung.
mysqld-ntOptimierte Binärdatei für Windows NT/2000/XP mit Unterstützung von Named Pipes.
mysqld-maxOptimierte Binärdatei mit Unterstützung für InnoDB- und BDB-Tabellen.
mysqld-max-ntWie mysqld-max, aber mit Unterstützung für Named Pipes kompiliert.

Alle genannten Binärdateien sind für moderne Intel-Prozessoren optimiert, sollten aber auf allen Intel i386-Prozessoren oder höher funktionieren.

Alle Windows-MySQL 5.1 Server unterstützen symbolische Verknüpfungen von Datenbankverzeichnissen.

MySQL unterstützt TCP/IP auf allen Windows-Plattformen. Die Server mysqld-nt und mysql-max-nt unterstützen Named Pipes unter Windows NT, 2000, XP und 2003. Allerdings wird TCP/IP standardmäßig unabhängig von der Plattform verwendet. (Named Pipes sind in vielen Windows-Konfigurationen langsamer als TCP/IP.)

Die Verwendung von Named Pipes hängt von folgenden Bedingungen ab:

  • Named Pipes werden nur aktiviert, wenn Sie den Server mit der Option --enable-named-pipe starten. Diese Option muss explizit angegeben werden, da einige Benutzer Schwierigkeiten mit dem Herunterfahren des MySQL Servers hatten, wenn Named Pipes verwendet wurden.

  • Named-Pipe-Verbindungen sind nur bei den Servern mysqld-nt und mysqld-max-nt und nur dann zulässig, wenn der Server unter einer Windows-Version läuft, die Named Pipes auch unterstützt (NT, 2000, XP, 2003).

  • Diese Server können auch auf Computern unter Windows 98 oder ME laufen, aber dann muss TCP/IP installiert sein; Named-Pipe-Verbindungen sind in diesem Fall nicht möglich.

  • Unter Windows 95 laufen die Server nicht.

Hinweis: Die meisten Beispiele in diesem Handbuch verwenden mysqld als Servername. Wenn Sie einen anderen Server (z. B. mysqld-nt) auswählen, nehmen Sie bei den in den Beispielen gezeigten Befehlen die erforderlichen Änderungen vor.

2.3.10. Erstmaliges Starten des Servers

In diesem Abschnitt finden Sie einen allgemeinen Überblick zum Start des MySQL Servers. Die nachfolgenden Abschnitte enthalten spezielle Informationen zum Starten des MySQL Servers von der Befehlszeile oder als Windows-Dienst.

Die hier enthaltenen Informationen gelten in erster Linie, wenn Sie MySQL aus dem Noinstall-Paket heraus installiert haben oder MySQL manuell (statt unter Verwendung der grafischen Oberflächen) konfigurieren und testen wollen.

Die Beispiele in diesem und den folgenden Abschnitten setzen voraus, dass MySQL im Standardverzeichnis C:\Programme\MySQL\MySQL Server 5.1 installiert wurde. Haben Sie MySQL an anderer Stelle installiert, dann müssen Sie die in den Beispielen gezeigten Pfadnamen entsprechend abändern.

Auf NT-basierten Systemen wie Windows NT, 2000, XP oder 2003 haben Clients zwei Optionen: Sie können entweder TCP/IP verwenden oder eine Named Pipe nutzen, sofern der Server Named-Pipe-Verbindungen unterstützt. Damit MySQL TCP/IP unter Windows NT 4.0 nutzen kann, muss das Service Pack 3 (oder höher) installiert sein.

Unter Windows 95/98/ME müssen MySQL-Clients die Serververbindung immer über TCP/IP herstellen. (Auf diese Weise kann jeder Rechner in Ihrem Netzwerk eine Verbindung zum MySQL Server herstellen.) Aus diesem Grund müssen Sie sicherstellen, dass die TCP/IP-Unterstützung auf Ihrem Computer installiert ist, bevor Sie MySQL starten. Sie finden TCP/IP auf Ihrer Windows-CD-ROM.

Beachten Sie, dass Sie, wenn Sie einen frühen Windows 95-Release (z. B. OSR2) verwenden, wahrscheinlich ein veraltetes Winsock-Paket verwenden; MySQL erfordert jedoch Winsock 2. Sie finden die aktuelle Winsock-Version auf der Website http://www.microsoft.com/. Windows 98 enthält die neue Winsock 2-Bibliothek bereits, d. h., diese muss nicht aktualisiert werden.

MySQL für Windows unterstützt auch Verbindungen mit gemeinsam genutztem Speicher, sofern beim Start die Option --shared-memory angegeben wurde. Clients können durch Verwendung der Option --protocol=memory eine Verbindung über gemeinsamen Speicher herstellen.

Informationen zur zu startenden Serverbinärdatei finden Sie in Abschnitt 2.3.9, „Auswahl des MySQL Server-Typs“.

Tests führen Sie am besten über die Eingabeaufforderung in einem Konsolenfenster (oder „DOS-Fenster“) aus. So kann der Server Statusmeldungen im Fenster anzeigen, wo sie leicht zu sehen sind. Funktioniert bei der Konfiguration etwas nicht einwandfrei, dann können Sie Probleme mithilfe dieser Meldungen erkennen und beheben.

Um den Server zu starten, geben Sie folgenden Befehl ein:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqld" --console

Bei Servern, die die InnoDB-Unterstützung enthalten, sollten Sie folgende Mitteilungen beim Serverstart sehen:

InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25  InnoDB: Started

Wenn der Server seine Startsequenz beendet, sollten Sie eine Meldung in der Art der folgenden sehen (hierdurch wird angezeigt, dass der Server nun zur Annahme von Clientverbindungen bereit ist):

mysqld: ready for connections
Version: '5.1.5-alpha'  socket: ''  port: 3306

Nachfolgend schreibt der Server weiterhin alle erzeugten Diagnoseausgaben in die Konsole. Sie können ein neues Konsolenfenster öffnen, in dem Clientprogramme ausgeführt werden.

Wenn Sie die Option --console weglassen, schreibt der Server die gesamte Diagnoseausgabe in das Fehlerlog im Datenverzeichnis (standardmäßig C:\Programme\MySQL\MySQL Server 5.1\data). Das Fehlerlog ist die Datei mit der Erweiterung .err.

Hinweis: Für die in den MySQL-Grant-Tabellen aufgeführten Konten gibt es zunächst noch keine Passwörter. Wenn Sie den Server gestartet haben, sollten Sie entsprechend der in Abschnitt 2.9, „Einstellungen und Tests nach der Installation“, beschriebenen Verfahrensweise Passwörter für diese Konten einrichten.

2.3.11. Starten von MySQL von der Windows-Befehlszeile

Der MySQL Server kann manuell über die Befehlszeile gestartet werden. Dies ist bei jeder Windows-Version möglich.

Um dem Server mysqld von der Befehlszeile zu starten, öffnen Sie ein Konsolenfenster („Eingabeaufforderung“) und geben folgenden Befehl ein:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqld"

Der in obigem Beispiel verwendete Pfad kann abhängig vom MySQL-Installationsverzeichnis auf Ihrem System anders aussehen.

Bei Nicht-NT-Versionen von Windows wird hierdurch mysqld im Hintergrund gestartet. Das bedeutet, dass nach dem Serverstart eine andere Eingabeaufforderung angezeigt wird. Wenn Sie den Server auf diese Weise unter Windows NT, 2000, XP oder 2003 starten, läuft der Server im Vordergrund; bis zur Beendigung des Servers erscheint keine Eingabeaufforderung. Aus diesem Grund müssen Sie ein anderes Konsolenfenster öffnen, um Clientprogramme ausführen zu können, während der Server läuft.

Sie können den MySQL Server mit folgendem Befehl beenden:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown

Hinweis: Wenn das MySQL-Benutzerkonto root ein Passwort aufweist, müssen Sie mysqladmin mit der Option -p aufrufen und das Passwort auf Aufforderung angeben.

Mit diesem Befehl rufen Sie das MySQL-Administrationshilfsprogramm mysqladmin auf, welches eine Verbindung zum Server herstellt und das Herunterfahren auslöst. Der Befehl stellt die Verbindung als MySQL-Benutzer root her. Dies ist das standardmäßige Administratorenkonto im MySQL-Grant-System. Beachten Sie, dass Benutzer im MySQL-Grant-System nichts mit den Benutzerkonten zu tun haben, über die man sich am Windows-System anmeldet.

Wenn mysqld nicht startet, kontrollieren Sie, ob der Server im Fehlerlog Meldungen eingetragen hat, die auf die Ursache des Problems schließen lassen. Das Fehlerlog befindet sich im Verzeichnis C:\Programme\MySQL\MySQL Server 5.1\data. Es handelt sich um die Datei mit der Erweiterung .err. Sie können auch versuchen, den Server als mysqld --console zu starten; in diesem Fall erhalten Sie unter Umständen über den Bildschirm einige nützliche Informationen, die bei der Beseitigung des Problems helfen können.

Die letzte Option ist der Start von mysqld mit den Optionen --standalone und --debug. In diesem Fall schreibt mysqld eine Logdatei namens C:\mysqld.trace, die die Ursache dafür angeben sollte, dass mysqld nicht gestartet wird. Siehe auch Abschnitt E.1.2, „Trace-Dateien erzeugen“.

Verwenden Sie mysqld --verbose --help, um alle Optionen anzuzeigen, die mysqld versteht.

2.3.12. Starten von MySQL als Windows-Dienst

Bei der Windows NT-Familie (Windows NT, 2000, XP, 2003) besteht die empfohlene Methode zur Ausführung von MySQL in der Installation als Dienst, wobei MySQL automatisch mit Windows gestartet und beendet wird. Ein MySQL Server, der als Dienst installiert ist, lässt sich mithilfe von NET über die Befehlszeile oder über das grafische Hilfsprogramm Dienste steuern.

Das Hilfsprogramm Dienste (der Service Control Manager von Windows) lässt sich über die Windows-Systemsteuerung aufrufen (Abschnitt Verwaltung bei Windows 2000, XP und Server 2003). Um Konflikte zu vermeiden, ist es ratsam, das Hilfsprogramm Dienste während der Serverinstallation oder Löschaktionen über die Befehlszeile zu schließen.

Bevor Sie MySQL als Windows-Dienst installieren, sollten Sie zunächst mit dem folgenden Befehl den aktuellen Server beenden, sofern dieser ausgeführt wird:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown

Hinweis: Wenn das MySQL-Benutzerkonto root ein Passwort aufweist, müssen Sie mysqladmin mit der Option -p aufrufen und das Passwort auf Aufforderung angeben.

Mit diesem Befehl rufen Sie das MySQL-Administrationshilfsprogramm mysqladmin auf, welches eine Verbindung zum Server herstellt und das Herunterfahren auslöst. Der Befehl stellt die Verbindung als MySQL-Benutzer root her. Dies ist das standardmäßige Administratorenkonto im MySQL-Grant-System. Beachten Sie, dass Benutzer im MySQL-Grant-System nichts mit den Benutzerkonten zu tun haben, über die man sich am Windows-System anmeldet.

Installieren Sie den Server mit dem folgenden Befehl als Dienst:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqld" --install

Mit dem Befehl zur Dienstinstallation wird der Server nicht gestartet. Hinweise zum Start finden Sie in einem späteren Abschnitt.

Um den Aufruf von MySQL-Programmen zu erleichtern, können Sie den Pfadnamen des MySQL-Verzeichnisses bin zur Umgebungsvariable PATH Ihres Windows-Systems hinzufügen:

  • Klicken Sie auf dem Windows-Desktop mit der rechten Maustaste auf das Symbol Arbeitsplatz und wählen Sie Eigenschaften.

  • Wählen Sie nun im angezeigten Fenster Systemeigenschaften die Registerkarte Erweitert und klicken Sie auf die Schaltfläche Umgebungsvariablen.

  • Unter Systemvariablen wählen Sie Path und klicken dann auf die Schaltfläche Bearbeiten. Das Dialogfeld Systemvariable bearbeiten erscheint.

  • Setzen Sie den Cursor an das Ende des im Feld Wert der Variablen gezeigten Texts (betätigen Sie die Taste Ende, um sicherzustellen, dass der Cursor tatsächlich ans Ende des Textes in diesem Textfeld gesetzt wird). Geben Sie nun den vollständigen Pfadnamen Ihres MySQL-Verzeichnisses bin ein (beispielsweise C:\Programme\MySQL\MySQL Server 5.1\bin). Achten Sie dabei darauf, dass dieser Pfad durch ein Semikolon von den übrigen Werten in diesem Feld abgetrennt ist. Bestätigen Sie nun alle angezeigten Dialogfelder nacheinander durch Anklicken der jeweiligen Schaltflächen OK, bis keine offenen Dialogfelder mehr angezeigt werden. Sie sollten jetzt aus jedem beliebigen Verzeichnis heraus jedes ausführbare MySQL-Programm durch Eingabe seines Namens an der DOS-Eingabeaufforderung starten können, ohne den vollständigen Pfad angeben zu müssen. Dies betrifft die Server, den mysql-Client und alle befehlszeilenbasierten MySQL-Hilfsprogramme wie mysqladmin und mysqldump.

    Wenn Sie mehrere MySQL Server auf Ihrem System betreiben, sollten Sie das MySQL-Verzeichnis bin nicht der Windows-Umgebungsvariablen PATH hinzufügen.

Warnung: Bei der manuellen Editierung der Umgebungsvariablen PATH müssen Sie größte Vorsicht walten lassen: Wenn Sie einen Teil des Werts von PATH versehentlich löschen oder ändern, kann das System instabil oder sogar unbrauchbar werden.

Bei der Installation des Dienstes können die folgenden zusätzlichen Argumente in MySQL 5.1 verwendet werden:

  • Sie können unmittelbar auf die Option --install einen Dienstnamen angeben. Der Standardname für den Dienst lautet MySQL.

  • Wird ein Name für den Dienst angegeben, so kann genau eine weitere Option folgen. Konventionsgemäß ist dies --defaults-file=file_name; hierdurch wird der Name einer Optionsdatei angegeben, die der Server beim Start auslesen soll.

    Sie können statt --defaults-file auch eine beliebige andere Option angeben, doch dies wird nicht empfohlen. --defaults-file ist flexibler, da es Ihnen die Festlegung einer Vielzahl von Startoptionen für den Server gestattet, die einfach in der spezifizierten Optionsdatei abgelegt werden.

  • Sie können auch eine Option --local-service gefolgt vom Dienstnamen angeben. In diesem Fall wird der Server über das Windows-Konto LocalService ausgeführt, welches über eingeschränkte Systemberechtigungen verfügt. Dieses Konto ist nur unter Windows XP oder höher vorhanden. Werden beide Optionen --defaults-file und --local-service auf den Dienstnamen folgend angegeben, dann ist die Reihenfolge unerheblich.

Bei einem MySQL Server, der als Windows-Dienst installiert ist, bestimmen die folgenden Grundsätze den Dienstnamen und die vom Server verwendeten Optionsdateien:

  • Wenn der Dienstinstallationsbefehl keinen Dienstnamen oder den Vorgabenamen (MySQL) gefolgt von der Option --install angibt, dann verwendet der Server den Dienstnamen MySQL und liest seine Optionen aus dem Abschnitt [mysqld] der Standardoptionsdateien aus.

  • Wurde im Dienstinstallationsbefehl ein anderer Dienstname als MySQL gefolgt von der Option --install angegeben, dann verwendet der Server diesen anderen Namen. Die Optionen werden dann aus dem Abschnitt in den Standardoptionsdateien ausgelesen, der den gleichen Namen hat wie der Dienst selbst.

    Außerdem liest der Server auch den Abschnitt [mysqld] in den Standardoptionsdateien aus. Sie können den Abschnitt [mysqld] also für diejenigen Optionen verwenden, die allen MySQL-Diensten gemeinsam sind, und zusätzlich einen Abschnitt mit dem Namen eines bestimmten Dienstes konfigurieren, der dann von dem Server benutzt wird, der mit diesem Dienstnamen installiert wurde.

  • Wenn im Dienstinstallationsbefehl die Option --defaults-file auf den Dienstnamen folgend angegeben wird, liest der Server nur die Optionen im Abschnitt [mysqld] der angegebenen Datei aus und ignoriert die Standardoptionsdateien.

Nehmen wir einmal den folgenden Befehl als ein etwas komplexeres Beispiel:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqld"
          --install MySQL --defaults-file=C:\my-opts.cnf

Hier wird der Standarddienstname (MySQL) auf die Option --install folgend angegeben. Wäre keine Option --defaults-file vorhanden, dann würde dieser Befehl dafür sorgen, dass der Server den Abschnitt [mysqld] in den Standardoptionsdateien ausliest. Da allerdings die Option --defaults-file angegeben ist, liest der Server die Optionen im Abschnitt [mysqld] der spezifizierten Datei.

Sie können Optionen auch als Startparameter im Windows-Hilfsprogramm Dienste festlegen, bevor Sie den MySQL-Dienst starten.

Wurde ein MySQL Server als Dienst installiert, dann startet Windows den Dienst automatisch beim Systemstart. Der Dienst lässt sich auch direkt aus dem Hilfsprogramm Dienste oder mithilfe des Befehls NET START MySQL starten. Der NET-Befehl unterscheidet hierbei keine Groß-/Kleinschreibung.

Wenn mysqld als Dienst ausgeführt wird, hat es keinen Zugriff auf ein Konsolenfenster; insofern werden keine Meldungen angezeigt. Wenn mysqld nicht startet, kontrollieren Sie, ob der Server im Fehlerlog Meldungen eingetragen hat, die auf die Ursache des Problems schließen lassen. Das Fehlerlog befindet sich im MySQL-Datenverzeichnis (z. B. C:\Programme\MySQL\MySQL Server 5.1\data). Es handelt sich um die Datei mit der Erweiterung .err.

Wenn ein MySQL Server als Dienst installiert wurde und dieser Dienst ausgeführt wird, beendet Windows ihn automatisch beim Herunterfahren. Der Server kann auch manuell im Hilfsprogramm Dienste, mit dem Befehl NET STOP MySQL oder dem Befehl mysqladmin shutdown beendet werden.

Außerdem haben Sie die Möglichkeit, den Server als manuellen Dienst zu installieren, wenn Sie nicht wollen, dass der Dienst beim Hochfahren automatisch gestartet wird. Verwenden Sie zu diesem Zweck die Option --install-manual statt --install:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqld" --install-manual

Um einen Server zu entfernen, der als Dienst installiert ist, beenden Sie ihn zunächst, sofern er noch ausgeführt wird; hierzu verwenden Sie den Befehl NET STOP MYSQL. Danach entfernen Sie ihn mit der Option --remove:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqld" --remove

Wenn mysqld nicht als Dienst ausgeführt wird, können Sie ihn über die Befehlszeile starten. Informationen zur Vorgehensweise finden Sie in Abschnitt 2.3.11, „Starten von MySQL von der Windows-Befehlszeile“.

Bitte schlagen Sie in Abschnitt 2.3.14, „Troubleshooting einer MySQL-Installation unter Windows“, nach, wenn Sie bei der Installation Probleme haben sollten.

2.3.13. Test der MySQL-Installation

Ob der MySQL Server funktioniert, können Sie durch Ausführen eines der folgenden Befehle leicht überprüfen:

C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqlshow"
C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqlshow" -u root mysql
C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqladmin" version status proc
C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysql" test

Wenn mysqld nur langsam auf TCP/IP-Verbindungen von Clientprogrammen reagiert, liegt wahrscheinlich ein DNS-Problem vor. Starten Sie in einem solchen Fall mysqld mit der Option --skip-name-resolve und verwenden Sie nur localhost und IP-Nummern in der Spalte Host der MySQL-Grant-Tabellen.

Sie können die Verwendung einer Named-Pipe-Verbindung (statt einer TCP/IP-Verbindung) erzwingen, indem Sie die Optionen --pipe oder --protocol=PIPE verwenden oder den Punkt . als Hostnamen angeben. Verwenden Sie die Option --socket, um den Namen der Pipe anzugeben, sofern Sie nicht den Namen der Standard-Pipe verwenden wollen.

2.3.14. Troubleshooting einer MySQL-Installation unter Windows

Wenn Sie MySQL zum ersten Mal installieren und ausführen, können bestimmte Fehler auftreten, die verhindern, dass der MySQL Server gestartet wird. Dieser Abschnitt soll Ihnen dabei helfen, einige dieser Fehler zu diagnostizieren und zu beheben.

Ihre erste Ressource bei der Fehlersuche ist das Fehlerlog. Der MySQL Server verwendet das Fehlerlog zur Aufzeichnung von Daten zu dem Fehler, der verhindert, dass der Server gestartet werden kann. Das Fehlerlog befindet sich im Datenverzeichnis, das in Ihrer Datei my.ini angegeben ist. Die Standardposition des Datenverzeichnisses ist C:\Programme\MySQL\MySQL Server 5.1\data. Siehe auch Abschnitt 5.12.1, „Die Fehler-Logdatei“.

Eine andere Informationsquelle zu möglichen Fehlern sind die Konsolenmeldungen, die beim Starten des MySQL-Dienstes angezeigt werden. Verwenden Sie den Befehl NET START mysql an der Befehlszeile, nachdem Sie mysqld als Dienst installiert haben, um Fehlermeldungen anzuzeigen, die beim Start des MySQL Servers als Dienst erzeugt werden. Siehe auch Abschnitt 2.3.12, „Starten von MySQL als Windows-Dienst“.

Die folgenden Beispiele zeigen weitere häufig auftretende Fehlermeldungen, die bei der Installation von MySQL und dem ersten Start des Servers angezeigt werden können:

  • Wenn der MySQL Server die mysql-Berechtigungsdatenbank oder andere kritische Dateien nicht finden kann, erscheinen Meldungen folgenden Typs:

    System error 1067 has occurred.
    Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
    

    Solche Meldungen treten häufig auf, wenn das MySQL-Datenbank- oder das MySQL-Datenverzeichnis nicht an der Standardposition (C:\Programme\MySQL\MySQL Server 5.1 bzw. C:\Programme\MySQL\MySQL Server 5.1\data) installiert wurde.

    Die Situation entsteht, wenn MySQL aktualisiert und in einem neuen Verzeichnis installiert, aber die Konfigurationsdatei nicht an die geänderte Umgebung angepasst wurde. Außerdem kann es zu Konflikten zwischen alten und neuen Konfigurationsdateien kommen. Benennen Sie alte Konfigurationsdateien in jedem Fall um oder löschen Sie sie, bevor Sie MySQL aktualisieren.

    Wenn Sie MySQL in ein anderes Verzeichnis als C:\Programme\MySQL\MySQL Server 5.1 installiert haben, müssen Sie sicherstellen, dass dies dem MySQL Server bekannt ist. Hierzu verwenden Sie die Konfigurationsdatei my.ini. Die Datei mit dem Namen my.ini muss in Ihrem Windows-Verzeichnis gespeichert sein (normalerweise C:\WINDOWS oder C:\WINNT). Sie können die exakte Position der Umgebungsvariable WINDIR entnehmen. Hierzu geben Sie den folgenden Befehl an der Befehlszeile ein:

    C:\> echo %WINDIR%
    

    Eine Optionsdatei kann mit jedem Texteditor (z. B. dem Windows-Editor) erstellt und bearbeitet werden. Ist MySQL beispielsweise in E:\mysql installiert und befindet sich das Datenverzeichnis in D:\MySQLdata, dann können Sie eine Optionsdatei erstellen, die einen Abschnitt [mysqld] enthält. In diesem geben Sie die folgenden Werte für die Parameter basedir und datadir an:

    [mysqld]
    # set basedir to your installation path
    basedir=E:/mysql
    # set datadir to the location of your data directory
    datadir=D:/MySQLdata
    

    Beachten Sie, dass Windows-Pfadnamen in Optionsdateien nicht mit Backslashs, sondern mit normalen Schrägstrichen angegeben werden. Wenn Sie Backslashs (umgekehrte Schrägstriche) verwenden, müssen Sie sie doppelt angeben:

    [mysqld]
    # set basedir to your installation path
    basedir=C:\\Program Files\\MySQL\\MySQL Server 5.1
    # set datadir to the location of your data directory
    datadir=D:\\MySQLdata
    

    Wenn Sie den Wert datadir in Ihrer MySQL-Konfigurationsdatei ändern, müssen Sie den Inhalt des vorhandenen MySQL-Datenverzeichnisses verschieben, bevor Sie den MySQL Server neu starten.

    Siehe auch Abschnitt 2.3.8, „Anlegen einer Optionsdatei“.

  • Wenn Sie MySQL neu installieren oder aktualisieren, ohne den vorhandenen MySQL-Dienst zu beenden und zu entfernen, und zur Installation den MySQL-Konfigurations-Assistenten verwenden, dann wird unter Umständen folgende Fehlermeldung angezeigt:

    Error: Cannot create Windows service for MySql. Error: 0
    

    Dies passiert, wenn der Konfigurations-Assistent einen Dienst zu installieren versucht und einen anderen Dienst gleichen Namens vorfindet.

    Eine Lösung dieses Problems besteht darin, bei Verwendung des Konfigurations-Assistenten einen anderen Dienstnamen als mysql auszuwählen. Hierdurch wird der neue Dienst korrekt installiert. Allerdings bleibt dann ein veralteter Dienst zurück. Dies ist an sich zwar unproblematisch, aber trotzdem sollten alte Dienste, die nicht mehr erforderlich sind, korrekt entfernt werden.

    Um den alten mysql-Dienst permanent zu entfernen, führen Sie den folgenden Befehl als Benutzer mit Administratorrechten an der Befehlszeile aus:

    C:\> sc delete mysql
    [SC] DeleteService SUCCESS
    

    Wenn das Hilfsprogramm sc bei Ihrer Windows-Version nicht vorhanden ist, laden Sie das Hilfsprogramm delsrv unter http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp herunter und verwenden Sie die Syntax delsrv mysql.

2.3.15. Upgrade von MySQL unter Windows

Dieser Abschnitt listet einige der Schritte auf, die bei der Aktualisierung von MySQL unter Windows erforderlich sind.

  1. Lesen Sie Abschnitt 2.10, „MySQL aktualisieren (Upgrade/Downgrade)“. Sie finden dort weitere, nicht Windows-spezifische Informationen zum Upgrade von MySQL.

  2. Fertigen Sie immer eine Sicherung Ihrer aktuellen MySQL-Installation an, bevor Sie ein Upgrade durchführen. Siehe auch Abschnitt 5.10.1, „Datenbank-Datensicherungen“.

  3. Laden Sie die aktuelle Windows-Distribution von MySQL unter http://dev.mysql.com/downloads/ herunter.

  4. Vor Durchführung des Upgrades müssen Sie den Server beenden. Ist der Server als Dienst installiert, dann beenden Sie ihn durch Eingabe des folgenden Befehls an der Befehlszeile:

    C:\> NET STOP MYSQL
    

    Wird der MySQL Server nicht als Dienst ausgeführt, dann beenden Sie ihn mit dem folgenden Befehl:

    C:\> "C:\Programme\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown
    

    Hinweis: Wenn das MySQL-Benutzerkonto root ein Passwort aufweist, müssen Sie mysqladmin mit der Option -p aufrufen und das Passwort auf Aufforderung angeben.

  5. Wenn Sie von einer MySQL-Version vor 4.1.5 auf MySQL 5.1 aktualisieren oder ein Upgrade von einer MySQL-Version, die aus einem ZIP-Archiv installiert wurde, auf eine mit dem MySQL-Installations-Assistenten zu installierende Version durchführen, dann müssen Sie die vorherige Installation und den MySQL-Dienst (sofern der Server als Dienst installiert ist) manuell entfernen.

    Verwenden Sie den folgenden Befehl, um den MySQL-Dienst zu entfernen:

    C:\> C:\mysql\bin\mysqld --remove
    

    Wenn Sie den vorhandenen Dienst nicht entfernen, kann der MySQL-Installations-Assistent den neuen MySQL-Dienst unter Umständen nicht korrekt installieren.

  6. Wenn Sie den MySQL-Installations-Assistenten verwenden, starten Sie den Assistenten wie in Abschnitt 2.3.4, „Verwendung des MySQL-Installations-Assistenten“, beschrieben.

  7. Wenn Sie MySQL aus einem ZIP-Archiv installieren, extrahieren Sie das Archiv. Sie können die vorhandene MySQL-Installation entweder überschreiben (diese befindet sich normalerweise im Verzeichnis C:\mysql) oder es in ein anderes Verzeichnis (z. B. C:\mysql4) installieren. Wir empfehlen das Überschreiben der vorhandenen Installation.

  8. Wenn Sie MySQL als Windows-Dienst ausführen und Sie den Dienst zu einem früheren Zeitpunkt dieses Vorgangs deinstallieren mussten, installieren Sie ihn jetzt neu. (Siehe auch Abschnitt 2.3.12, „Starten von MySQL als Windows-Dienst“.)

  9. Starten Sie den Server neu. Verwenden Sie beispielsweise NET START MySQL, wenn Sie MySQL als Dienst ausführen, oder rufen Sie mysqld auf andere Weise direkt auf.

  10. Wenn Fehler auftreten, finden Sie weitere Informationen in Abschnitt 2.3.14, „Troubleshooting einer MySQL-Installation unter Windows“.

2.3.16. MySQL unter Windows im Vergleich zu MySQL unter Unix

MySQL für Windows hat sich als sehr stabil erwiesen. Die Windows-Version von MySQL hat dieselben Merkmale wie die entsprechende Unix-Version. Es gibt jedoch folgende Ausnahmen:

  • Windows 95 und Threads

    Pro erstelltem Thread verliert Windows 95 durch ein Speicherleck etwa 200 Byte Hauptspeicher. Jede Verbindung in MySQL erstellt einen neuen Thread, weswegen man mysqld nicht für längere Zeit unter Windows 95 ausführen sollte, wenn Ihr Server mehrere Verbindungen verwaltet! Neuere Windows-Versionen weisen diesen Bug nicht auf.

  • Eingeschränkte Anzahl von Ports

    Windows-Systeme stellen für Clientverbindungen etwa 4000 Ports bereit. Wird eine Verbindung über einen Port beendet, dann dauert es zwei bis vier Minuten, bis der Port wieder verwendet werden kann. In Situationen, in denen Clients sehr schnell Verbindungen mit dem Server herstellen und diese wieder trennen, ist es unter Umständen möglich, dass alle verfügbaren Ports verbraucht sind, bevor bereits geschlossene Ports wieder verfügbar werden. In diesem Fall scheint der MySQL Server stehen geblieben zu sein, obwohl er tatsächlich nach wie vor ausgeführt wird. Beachten Sie, dass unter Umständen auch andere auf dem System laufenden Anwendungen Ports beanspruchen; in diesem Fall ist die Anzahl der für MySQL verfügbaren Ports noch geringer.

    Weitere Informationen zu diesem Problem finden Sie unter http://support.microsoft.com/default.aspx?scid=kb;en-us;196271.

  • Gleichzeitige Leseoperationen

    MySQL ist auf die Systemaufrufe pread() und pwrite() angewiesen, um INSERT und SELECT miteinander kombinieren zu können. Zurzeit verwenden wir Mutexe zur Emulation von pread() und pwrite(). Wir beabsichtigen, diese Schnittstelle auf Dateiebene in der Zukunft durch eine virtuelle Schnittstelle zu ersetzen, damit wir die Schnittstellen readfile()/writefile() unter Windows NT, Windows 2000 und Windows XP verwenden und so eine höhere Geschwindigkeit erzielen können. Die aktuelle Implementierung beschränkt die Anzahl der von MySQL 5.1 verwendbaren offenen Dateien auf 2048, d. h., Sie können unter Windows NT/2000/XP/Server 2003 nicht so viele gleichzeitige Threads ausführen wie unter Unix.

  • Sperrleseoperationen

    MySQL verwendet für jede Verbindung eine Sperrleseoperation. Dies hat die folgenden Auswirkungen, wenn Named-Pipe-Verbindungen aktiviert sind:

    • Eine Verbindung wird – anders als bei MySQL für Unix – nicht automatisch nach acht Stunden getrennt.

    • Hängt eine Verbindung, dann ist es nicht möglich, diese zu unterbrechen, ohne MySQL zu terminieren.

    • mysqladmin kill funktioniert bei hängenden Verbindungen nicht.

    • mysqladmin shutdown kann MySQL nicht herunterfahren, solange eine Verbindung hängt.

    Wir beabsichtigen, dieses Problem in der Zukunft zu lösen.

  • ALTER TABLE

    Während Sie eine ALTER TABLE-Anweisung ausführen, ist die betreffende Tabelle für die Benutzung durch andere Threads gesperrt. Dies hängt mit der Tatsache zusammen, dass Sie eine Datei unter Windows nicht löschen können, solange sie von einem anderen Thread verwendet wird. Wir hoffen, für dieses Problem in der Zukunft einen Workaround zu finden.

  • DROP TABLE

    Die Ausführung von DROP TABLE für eine Tabelle, die von einer MERGE-Tabelle verwendet wird, funktioniert unter Windows nicht, da der MERGE-Handler die Tabellenzuordnung vor der übergeordneten Schicht von MySQL verborgen vornimmt. Da Windows das Löschen geöffneter Dateien nicht gestattet, müssen Sie zunächst alle MERGE-Tabellen (mit FLUSH TABLES) neu laden oder die MERGE-Tabelle löschen, bevor Sie die gewünschte Tabelle tatsächlich löschen können.

  • DATA DIRECTORY und INDEX DIRECTORY

    Die Optionen DATA DIRECTORY und INDEX DIRECTORY für CREATE TABLE werden unter Windows ignoriert, da Windows keine symbolischen Verknüpfungen unterstützt. Außerdem werden diese Optionen auf Systemen ignoriert, bei denen der Aufruf realpath() nicht funktioniert.

  • DROP DATABASE

    Sie können eine Datenbank, die gerade von einem Thread verwendet wird, nicht löschen.

  • MySQL aus dem Task-Manager heraus terminieren

    Unter Windows 95 können Sie MySQL nicht aus dem Task-Manager heraus oder mit dem Ausschalt-Utility terminieren. Sie müssen MySQL vielmehr mit dem Befehl mysqladmin shutdown beenden.

  • Irrelevante Groß-/Kleinschreibung bei Namen

    Da die Groß-/Kleinschreibung bei Dateinamen unter Windows nicht unterschieden wird, ist auch die Schreibweise der Namen von MySQL-Datenbanken und -Tabellen unter Windows irrelevant. Die einzige Einschränkung besteht darin, dass die Datenbank- und Tabellennamen unter Verwendung derselben Schreibweise (Groß- oder Kleinschreibung) in einer gegebenen Anweisung festgelegt werden müssen. Siehe auch Abschnitt 9.2.2, „Groß-/Kleinschreibung in Namen“.

  • Das Pfadtrennzeichen ‘\

    Unter Windows werden die Bestandteile von Pfaden durch das Zeichen ‘\’ voneinander getrennt, welches gleichzeitig das Escape-Zeichen von MySQL ist. Wenn Sie LOAD DATA INFILE oder SELECT ... INTO OUTFILE verwenden, verwenden Sie Dateinamen im Unix-Stil mit ‘/’-Zeichen:

    mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;
    mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
    

    Alternativ müssen Sie das Zeichen ‘\’ doppelt verwenden:

    mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;
    mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
    
  • Probleme mit Pipes

    An der Windows-Eingabeaufforderung funktionieren Pipes nicht zuverlässig. Wenn eine Pipe das Zeichen ^Z/CHAR(24) enthält, meint Windows ein Dateiende zu erkennen und bricht das Programm ab.

    Dies ist in erster Linie ein Problem, wenn Sie wie folgt eine binäre Logdatei anzuwenden versuchen:

    C:\> mysqlbinlog binary_log_file | mysql --user=root
    

    Wenn Sie bei der Anwendung des Logs Probleme haben und das Zeichen ^Z/CHAR(24) für die Ursache halten, dann können Sie den folgenden Workaround verwenden:

    C:\> mysqlbinlog binary_log_file --result-file=/tmp/bin.sql
    C:\> mysql --user=root --execute "source /tmp/bin.sql"
    

    Der untere Befehl kann auch verwendet werden, um zuverlässig in einer beliebigen SQL-Datei zu lesen, die unter Umständen Binärdateien enthält.

  • Fehler Access denied for user

    Wenn MySQL Ihren Hostnamen nicht korrekt auflösen kann, erhalten Sie unter Umständen folgende Fehlermeldung, sobald Sie versuchen, ein MySQL-Clientprogramm auszuführen, um eine Verbindung mit dem auf dem gleichen Computer laufenden Server herzustellen:

    Access denied for user 'some_user'@'unknown'
    to database 'mysql'
    

    Um dieses Problem zu beheben, sollten Sie eine Datei namens \windows\hosts erstellen, die die folgenden Informationen enthält:

    127.0.0.1       localhost
    

2.4. MySQL unter Linux installieren

Die empfohlene Vorgehensweise zur Installation von MySQL unter Linux besteht in der Verwendung von RPM-Paketen. Die MySQL-RPMs werden derzeit auf einem SuSE Linux 7.3-System erstellt, sollten aber unter den meisten Linux-Versionen funktionieren, die rpm unterstützen und glibc verwenden. Wie Sie sich die RPM-Pakete beschaffen, lesen Sie in Abschnitt 2.1.3, „Woher man MySQL bekommt“.

MySQL AB bietet eine Reihe plattformspezifischer RPMs an. Der Unterschied zwischen einem plattformspezifischen und einem generischen RPM besteht darin, dass ein plattformspezifisches RPM auf der Zielplattform erstellt und dynamisch verknüpft wurde, wohingegen ein generisches RPM statisch mit LinuxThreads verknüpft ist.

Hinweis: RPM-Distributionen von MySQL werden häufig von anderen Anbietern bereitgestellt. Beachten Sie, dass Merkmale und Funktionsumfang sich von den Versionen unterscheiden können, die von MySQL AB angeboten werden, und dass die Angaben in diesem Handbuch nicht unbedingt für deren Installation gelten. Ziehen Sie im Zweifelsfall die Dokumentation des Anbieters zu Rate.

Wenn Sie Probleme mit einer RPM-Datei haben (also etwa, wenn die Fehlermeldung Sorry, the host 'xxxx' could not be looked up angezeigt wird), finden Sie weitere Informationen in Abschnitt 2.12.1.2, „Anmerkungen zur Binärdistribution (Linux)“.

In den meisten Fällen müssen Sie nur die Pakete MySQL-server und MySQL-client installieren, um eine lauffähige MySQL-Installation zu erhalten. Die übrigen Pakete sind für eine Standardinstallation nicht erforderlich. Wenn Sie einen MySQL-Max-Server mit Zusatzfunktionen verwenden wollen, sollten Sie auch das RPM MySQL-Max installieren. Allerdings sollten Sie dies erst nach der Installation des MySQL-server-RPM durchführen. Siehe auch Abschnitt 5.3, „mysqld-max, ein erweiterter mysqld-Server“.

Wenn Sie bei dem Versuch, MySQL-Pakete zu installieren, einen Abhängigkeitsfehler erhalten (z. B. error: removing these packages would break dependencies: libmysqlclient.so.10 is needed by ...), dann sollten Sie auch das Paket MySQL-shared-compat installieren, denn dieses enthält die beiden gemeinsamen Bibliotheken für die Abwärtskompatibilität (libmysqlclient.so.12 für MySQL 4.0 und libmysqlclient.so.10 für MySQL 3.23) .

Einige Linux-Distributionen werden immer noch mit MySQL 3.23 ausgeliefert und verknüpfen Anwendungen gewöhnlich dynamisch, um Festplattenkapazität zu sparen. Befinden sich diese gemeinsamen Bibliotheken in einem separaten Paket (z. B. MySQL-shared), dann reicht es aus, dieses Paket einfach installiert zu lassen und nur die MySQL Server- und -Clientpakete zu aktualisieren (diese sind statisch verknüpft und hängen nicht von den gemeinsamen Bibliotheken ab). Bei Distributionen, in denen die gemeinsamen Bibliotheken im selben Paket enthalten sind wie der MySQL Server (z. B. Red Hat Linux), können Sie entweder unser MySQL-shared-RPM für Version 3.23 installieren oder stattdessen das Paket MySQL-shared-compat verwenden.

Die folgenden RPM-Pakete sind verfügbar:

  • MySQL-server-VERSION.i386.rpm

    Das ist der MySQL Server. Sie benötigen ihn in jedem Fall, sofern Sie nicht lediglich eine Verbindung mit einem MySQL Server herstellen wollen, der auf einem anderen Computer ausgeführt wird. Hinweis: Server-RPM-Dateien hießen vor MySQL 4.0.10 MySQL-VERSION.i386.rpm (d. h., der Zusatz -server war im Namen nicht enthalten).

  • MySQL-Max-VERSION.i386.rpm

    Das ist der MySQL Max-Server. Dieser Server verfügt über zusätzliche Fähigkeiten, die der Server im RPM MySQL-server nicht aufweist. Sie müssen das RPM MySQL-server jedoch zuerst installieren, da es für MySQL-Max erforderlich ist.

  • MySQL-client-VERSION.i386.rpm

    Die MySQL-Standardclientprogramme. Dieses Paket sollten Sie immer installieren.

  • MySQL-bench-VERSION.i386.rpm

    Tests und Benchmarks. Erfordert Perl und das Modul DBD::mysql.

  • MySQL-devel-VERSION.i386.rpm

    Die Bibliotheken und Include-Dateien, die erforderlich sind, wenn Sie andere MySQL-Clients (z. B. die Perl-Module) kompilieren wollen.

  • MySQL-shared-VERSION.i386.rpm

    Dieses Paket enthält die gemeinsamen Bibliotheken (libmysqlclient.so*), die bestimmte Sprachen und Anwendungen benötigen, um MySQL dynamisch laden und verwenden zu können.

  • MySQL-shared-compat-VERSION.i386.rpm

    Dieses Paket enthält die gemeinsamen Bibliotheken für MySQL 3.23 und MySQL 4.0. Installieren Sie es statt MySQL-shared, wenn Sie Anwendungen haben, die dynamisch mit MySQL 3.23 verknüpft sind, Sie aber auf MySQL 4.0 aktualisieren wollen, ohne die Bibliotheksabhängigkeiten zu durchbrechen. Das Paket ist ab MySQL 4.0.13 verfügbar.

  • MySQL-embedded-VERSION.i386.rpm

    Dies ist die eingebettete MySQL Server-Bibliothek (verfügbar ab MySQL 4.0).

  • MySQL-VERSION.src.rpm

    Dieses Paket enthält den Quellcode aller zuvor aufgeführten Pakete. Es kann auch zur Neuerstellung der RPMs auf anderen Architekturen (z. B. Alpha oder SPARC) verwendet werden.

Um alle in einem RPM-Paket (z. B. einem MySQL-server-RPM) enthaltenen Dateien anzuzeigen, führen Sie den folgenden Befehl aus:

shell> rpm -qpl MySQL-server-VERSION.i386.rpm

Wollen Sie eine minimale Standardinstallation durchführen, dann installieren Sie die Server- und Client-RPMs:

shell> rpm -i MySQL-server-VERSION.i386.rpm
shell> rpm -i MySQL-client-VERSION.i386.rpm

Wenn Sie nur die Clientprogramme benötigen, dann installieren Sie lediglich das Client-RPM:

shell> rpm -i MySQL-client-VERSION.i386.rpm

Das RPM-Format bietet eine Funktion zur Überprüfung der Integrität und Authentifizierung von Paketen vor der Installation. Wenn Sie mehr zu dieser Funktion erfahren wollen, lesen Sie Abschnitt 2.1.4, „Bestätigen der Paketintegrität mittels MD5-Prüfsummen oder GnuPG.

Das Server-RPM legt Daten im Verzeichnis /var/lib/mysql ab. Außerdem richtet das RPM ein Anmeldekonto für einen Benutzer namens mysql (sofern nicht bereits vorhanden) ein, über das der MySQL Server ausgeführt wird, und erstellt die entsprechenden Einträge in /etc/init.d/, um den Server automatisch mit dem System zu starten. (Dies bedeutet, dass Sie, wenn Sie zuvor bereits eine Installation durchgeführt und Änderungen an deren Startskript vorgenommen haben, eine Kopie des Skripts erstellen sollten, damit es bei der Installation eines neueren RPM nicht verloren geht.) Weitere Informationen dazu, wie MySQL automatisch mit dem System gestartet werden kann, finden Sie in Abschnitt 2.9.2.2, „MySQL automatisch starten und anhalten“.

Wenn Sie das MySQL-RPM auf älteren Linux-Distributionen installieren wollen, die Initialisierungsskripten in /etc/init.d noch nicht (direkt oder über eine symbolische Verknüpfung) unterstützen, dann sollten Sie eine symbolische Verknüpfung erstellen, die auf die Position verweist, an der Ihre Initialisierungsskripten tatsächlich installiert sind. Heißt die Position etwa /etc/rc.d/init.d, dann geben Sie vor der Installation des RPM die folgenden Befehle ein, um /etc/init.d als symbolische Verknüpfung zu erstellen, die darauf verweist:

shell> cd /etc
shell> ln -s rc.d/init.d .

Allerdings sollten die aktuellen Versionen aller wichtigen Linux-Distributionen das neue Verzeichnislayout unterstützen, das /etc/init.d verwendet, da es für die LSB-Kompatibilität (Linux Standard Base) erforderlich ist.

Wenn zu den RPM-Dateien, die Sie installieren, MySQL-server gehört, dann sollte der Server mysqld nach der Installation einwandfrei funktionieren. Sie sollten ihn mithilfe von MySQL starten können.

Klappt etwas nicht, dann erhalten Sie weitere Informationen im Abschnitt zur Installation von Binärdistributionen. Siehe auch Abschnitt 2.7, „Installation von MySQL auf anderen Unix-ähnlichen Systemen“.

Hinweis: Für die in den MySQL-Grant-Tabellen aufgeführten Konten gibt es zunächst noch keine Passwörter. Wenn Sie den Server gestartet haben, sollten Sie entsprechend der in Abschnitt 2.9, „Einstellungen und Tests nach der Installation“, beschriebenen Verfahrensweise Passwörter für diese Konten einrichten.

2.5. Installation von MySQL unter Mac OS X

Sie können MySQL unter Mac OS X 10.2.x („Jaguar“) oder höher mithilfe eines Mac OS X-Binärpakets im PKG-Format anstelle der binären Tar-Distribution installieren. Bitte beachten Sie, dass ältere Mac OS X-Versionen (z. B. 10.1.x) nicht durch dieses Paket unterstützt werden.

Das Paket befindet sich in einer Festplattenimagedatei (.dmg), die Sie zunächst einbinden müssen. Doppelklicken Sie im Finder auf das zugehörige Symbol. Danach binden Sie das Image ein und zeigen seinen Inhalt an.

Wie Sie sich MySQL beschaffen, lesen Sie in Abschnitt 2.1.3, „Woher man MySQL bekommt“.

Hinweis: Bevor Sie mit der Installation fortfahren, müssen Sie alle laufenden MySQL Server-Instanzen herunterfahren. Dies tun Sie entweder mit der MySQL-Manager-Anwendung (unter Mac OS X Server) oder mithilfe von mysqladmin shutdown an der Befehlszeile.

Um nun die MySQL-PGK-Datei zu installieren, doppelklicken Sie auf das Paketsymbol. Nun wird das Installationsprogramm für das Mac OS X-Paket gestartet. Dieses Programm geleitet Sie durch die Installation von MySQL.

Aufgrund eines Bugs im Mac OS X-Paketinstallationsprogramm wird bei Anzeige des Dialogfelds zur Auswahl des Ziellaufwerks unter Umständen die folgende Fehlermeldung angezeigt:

You cannot install this software on this disk. (null)

Klicken Sie in diesem Fall einmal auf die Schaltfläche Go Back, um zum vorherigen Bildschirm zurückzukehren. Klicken Sie dann auf Continue, um das Dialogfeld zur Auswahl des Ziellaufwerks erneut aufzurufen. Nun sollten Sie das Ziellaufwerk problemlos auswählen können. Wir haben diesen Bug Apple bereits gemeldet. Das Problem wird dort untersucht.

Das Mac OS X-PKG von MySQL installiert sich im Verzeichnis /usr/local/mysql-VERSION. Ferner wird eine symbolische Verknüpfung /usr/local/mysql eingerichtet, die ebenfalls auf die neue Position verweist. Ist ein Verzeichnis namens /usr/local/mysql bereits vorhanden, dann wird dieses zunächst in /usr/local/mysql.bak umbenannt. Außerdem erstellt das Installationsprogramm die Grant-Tabellen in der mysql-Datenbank. Hierzu führt es den Befehl mysql_install_db aus.

Das Installationslayout ähnelt dem einer tar-Binärdistribution: Alle MySQL-Binärdateien befinden sich im Verzeichnis /usr/local/mysql/bin. Die MySQL-Socketdatei wird standardmäßig als /tmp/mysql.sock erstellt. Siehe auch Abschnitt 2.1.5, „Installationslayouts“.

Für die MySQL-Installation ist ein Mac OS X-Benutzerkonto mit dem Namen mysql erforderlich. Unter Mac OS X 10.2 und höher sollte ein solches Konto standardmäßig vorhanden sein.

Wenn Sie Mac OS X Server ausführen, sollte eine MySQL-Version bereits installiert sein. Die folgende Tabelle zeigt die MySQL-Versionen, die mit den verschiedenen Versionen von Mac OS X Server ausgeliefert werden.

Mac OS X Server-VersionMySQL-Version
10.2–10.2.23.23.51
10.2.3–10.2.63.23.53
10.34.0.14
10.3.24.0.16
10.4.04.1.10a

Dieses Handbuch behandelt nur die Installation des offiziellen MySQL-PKG für Mac OS X. Lesen Sie in jedem Fall Apples Hilfeinformationen zur Installation von MySQL: Starten Sie die Anwendung „Hilfeanzeige“ und wählen Sie die Hilfe für „Mac OS X-Server“. Suchen Sie dann nach dem Begriff „MySQL“ und lesen Sie das Thema „MySQL installieren“.

Beachten Sie bei vorinstallierten MySQL-Versionen auf Mac OS X Server insbesondere, dass Sie mysqld mit dem Befehl safe_mysqld statt mysqld_safe starten müssen, wenn die betreffende MySQL-Version älter ist als 4.0.

Haben Sie zuvor MySQL-Pakete für Mac OS X von Marc Liyanage verwendet (http://www.entropy.ch), dann können Sie die auf den dortigen Seiten beschriebenen Aktualisierungsanweisungen für Pakete einfach unter Verwendung der dort bezeichneten Installationsstruktur für Binärdistributionen befolgen.

Aktualisieren Sie von Marcs Versionen 3.23.xx oder von der Mac OS X Server-Version von MySQL auf das offizielle MySQL-PKG, dann müssen Sie die vorhandenen MySQL-Berechtigungstabellen ebenfalls in das aktuelle Format konvertieren, da einige neue Sicherheitsberechtigungen hinzugefügt worden sind. Siehe auch Abschnitt 5.6, „mysql_fix_privilege_tables — Upgrade von MySQL-Systemtabellen“.

Wenn Sie wollen, dass MySQL während des Systemstarts automatisch gestartet wird, müssen Sie auch das MySQL-Startobjekt installieren. Es ist auf dem Mac OS X-Installationsmedium als separates Installationspaket enthalten. Doppelklicken Sie einfach auf das Symbol MySQLStartupItem.pkg und folgen Sie dann den Anweisungen am Bildschirm.

Beachten Sie, dass das Startobjekt nur einmal installiert werden darf! Es ist nicht notwendig, das Startobjekt bei jeder späteren Aktualisierung des MySQL-Pakets vorzunehmen.

Das Startobjekt für MySQL wird in /Library/Startobjekte/MySQLCOM installiert. (Vor MySQL 4.1.2 hieß das Verzeichnis /Library/StartupItems/MySQL, aber dies führt zu einem Konflikt mit dem MySQL-Startobjekt, das von Mac OS X Server installiert wurde.) Bei der Startobjektinstallation wird eine Variable MYSQLCOM=-YES- in der Systemkonfigurationsdatei /etc/hostconfig ergänzt. Wenn Sie den automatischen Start von MySQL deaktivieren wollen, ändern Sie einfach den Wert der Variablen wie folgt: MYSQLCOM=-NO-.

Unter Mac OS X Server verwendet die MySQL-Standardinstallation die Variable MYSQL in der Datei /etc/hostconfig. Das Startobjekt-Installationsprogramm von MySQL AB deaktiviert diese Variable (MYSQL=-NO-). Hierdurch werden beim Systemstart Konflikte mit der Variablen MYSQLCOM vermieden, die vom MySQL AB-Startobjekt verwendet wird. Allerdings wird dabei ein laufender MySQL Server nicht heruntergefahren. Dies müssen Sie selbst erledigen.

Nach der Installation können Sie MySQL mithilfe der folgenden Befehle in einem Terminal-Fenster ausführen. Um diesen Vorgang durchzuführen, benötigen Sie Administratorrechte.

Wenn Sie das Startobjekt installiert haben, verwenden Sie folgenden Befehl:

shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
(Enter your password, if necessary)
(Press Control-D or enter "exit" to exit the shell)

Wenn Sie das Startobjekt hingegen nicht installiert haben, geben Sie diese Befehlsfolge ein:

shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(Enter your password, if necessary)
(Press Control-Z)
shell> bg
(Press Control-D or enter "exit" to exit the shell)

Sie sollten nun in der Lage sein, eine Verbindung zum MySQL Server herzustellen. Hierzu können Sie etwa /usr/local/mysql/bin/mysql ausführen.

Hinweis: Für die in den MySQL-Grant-Tabellen aufgeführten Konten gibt es zunächst noch keine Passwörter. Wenn Sie den Server gestartet haben, sollten Sie entsprechend der in Abschnitt 2.9, „Einstellungen und Tests nach der Installation“, beschriebenen Verfahrensweise Passwörter für diese Konten einrichten.

Sie sollten in der Ressourcendatei Ihrer Shell Aliase ergänzen, um den Zugriff auf häufig verwendete Programme wie mysql und mysqladmin über die Befehlszeile zu erleichtern. Die Syntax für bash lautet:

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

Für tcsh verwenden Sie Folgendes:

alias mysql /usr/local/mysql/bin/mysql
alias mysqladmin /usr/local/mysql/bin/mysqladmin

Noch vorteilhafter ist es, /usr/local/mysql/bin zur Umgebungsvariablen PATH hinzuzufügen. Fügen Sie beispielsweise die folgende Zeile zu Ihrer Datei $HOME/.bashrc hinzu, wenn Sie bash als Shell verwenden:

PATH=${PATH}:/usr/local/mysql/bin

Fügen Sie folgende Zeile zu Ihrer Datei $HOME/.tcshrc hinzu, wenn Sie tcsh als Shell verwenden:

setenv PATH ${PATH}:/usr/local/mysql/bin

Wenn weder .bashrc noch .tcshrc in Ihrem Homeverzeichnis vorhanden sind, erstellen Sie die Datei mit einem Texteditor.

Aktualisieren Sie eine vorhandene Installation, dann beachten Sie, dass, wenn Sie ein neues MySQL-PKG installieren, das Verzeichnis der alten Installation nicht entfernt wird. Leider bietet das Mac OS X-Installationsprogramm noch nicht die Funktionalität, die zur korrekten Aktualisierung zuvor installierter Pakete erforderlich ist.

Um Ihre vorhandenen Datenbanken mit der neuen Installation verwenden zu können, müssen Sie den Inhalt des alten Datenverzeichnisses in das neue Datenverzeichnis kopieren. Stellen Sie sicher, dass weder der alte noch der neue Server laufen, während Sie diesen Kopiervorgang durchführen. Haben Sie die MySQL-Datenbankdateien der alten Installation kopiert und den neuen Server erfolgreich gestartet, dann können Sie die alten Installationsdateien entfernen, um Festplattenspeicher zu sparen. Ebenfalls entfernen sollten Sie ältere Versionen der Package-Receipt-Verzeichnisse in /Library/Receipts/mysql-VERSION.pkg.

2.6. Installation von MySQL unter NetWare

Die Portierung von MySQL auf NetWare wurde von Novell gezielt unterstützt. Kunden von Novell werden erfreut sein zu erfahren, dass NetWare 6.5 im Bündel mit MySQL-Binärdateien ausgeliefert wird – komplett mit einer automatischen Lizenz zur kommerziellen Nutzung, gültig für alle Server, auf denen diese NetWare-Version läuft.

MySQL für NetWare wird mithilfe einer Kombination aus Metrowerks CodeWarrior for NetWare und speziellen Versionen der GNU-Autotools zur Cross-Kompilierung kompiliert.

Die aktuellen Binärpakete für NetWare erhalten Sie unter http://dev.mysql.com/downloads/. Siehe auch Abschnitt 2.1.3, „Woher man MySQL bekommt“.

Ein NetWare-Server, auf dem MySQL laufen soll, muss die folgenden Anforderungen erfüllen:

  • Das aktuelle Support Pack für NetWare 6.5 muss installiert sein.

  • Das System muss die Mindestanforderungen erfüllen, die Novell für die Ausführung der betreffenden NetWare-Version stellt.

  • MySQL-Daten und die Programmbinärdateien müssen auf einem NSS-Volume installiert sein (traditionelle Volumes werden nicht unterstützt).

Gehen Sie wie folgt vor, um MySQL für NetWare zu installieren:

  1. Wenn Sie eine vorhandene Installation aktualisieren, beenden Sie den MySQL Server. Hierzu geben Sie den folgenden Befehl an der Serverkonsole ein:

    SERVER:  mysqladmin -u root shutdown
    

    Hinweis: Wenn das MySQL-Benutzerkonto root ein Passwort aufweist, müssen Sie mysqladmin mit der Option -p aufrufen und das Passwort auf Aufforderung angeben.

  2. Melden Sie sich am Zielserver über einen Clientcomputer an, der Zugriff auf das Verzeichnis hat, in dem Sie MySQL installieren wollen.

  3. Extrahieren Sie die ZIP-Datei mit dem Binärpaket auf den Server. Stellen Sie dabei sicher, dass die in der ZIP-Datei gespeicherten Pfade verwendet werden. Am sichersten ist das einfache Entpacken nach SYS:\.

    Wenn Sie eine vorhandene Installation aktualisieren, müssen Sie unter Umständen das Datenverzeichnis (beispielsweise SYS:MYSQL\DATA) kopieren. Gleiches gilt für die Datei my.cnf, sofern Sie diese an Ihre Bedürfnisse angepasst haben. Danach können Sie die alte Kopie von MySQL löschen.

  4. Sie sollten dem Verzeichnis einen anderen, konsistenteren und einfacher zu handhabenden Namen geben. In den Beispielen dieses Handbuchs verwenden wir SYS:MYSQL als Bezeichnung für das Installationsverzeichnis.

    Beachten Sie, dass die MySQL-Installation unter NetWare nicht erkennt, ob eine MySQL-Version außerhalb des NetWare-Releases bereits vorhanden ist. Haben Sie also etwa die aktuelle MySQL-Version (ab MySQL 4.1 oder höher) aus dem Web in SYS:\MYSQL installiert, dann müssen Sie den Ordner umbenennen, bevor Sie den NetWare-Server aktualisieren; andernfalls werden in SYS:\MySQL vorhandene Dateien, die im NetWare Support Pack abgelegt sind, mit der MySQL-Version überschrieben.

  5. Fügen Sie an der Serverkonsole einen Suchpfad für das Verzeichnis hinzu, welches die MySQL-NLMs enthält. Ein Beispiel:

    SERVER:  SEARCH ADD SYS:MYSQL\BIN
    
  6. Initialisieren Sie ggf. das Datenverzeichnis und die Grant-Tabellen, indem Sie mysql_install_db an der Serverkonsole ausführen.

  7. Starten Sie den MySQL Server mit mysqld_safe an der Serverkonsole.

  8. Um die Installation abzuschließen, sollten Sie auch die folgenden Befehle in der Datei autoexec.ncf ergänzen. Wenn Ihre MySQL-Installation beispielsweise in SYS:MYSQL abgelegt ist und Sie MySQL automatisch starten wollen, fügen Sie folgende Befehle hinzu:

    #Starts the MySQL 5.1.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE
    

    Führen Sie MySQL unter NetWare 6.0 aus, dann empfehlen wir Ihnen dringend die Verwendung der Option --skip-external-locking in der Befehlszeile:

    #Starts the MySQL 5.1.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE --skip-external-locking
    

    Ferner ist es notwendig, CHECK TABLE und REPAIR TABLE anstelle von myisamchk zu verwenden, da myisamchk externe Sperren verwendet. Die externe Sperrung bereitet bei NetWare 6.0 bekanntermaßen Probleme. Diese wurden jedoch in NetWare 6.5 beseitigt.

    mysqld_safe stellt unter NetWare eine Bildschirmpräsenz bereit. Wenn Sie das NLM mysqld_safe entladen (herunterfahren), verschwindet der Bildschirm standardmäßig nicht. Stattdessen wird eine Benutzereingabe angefordert:

    *<NLM has terminated; Press any key to close the screen>*
    

    Wenn Sie hingegen wollen, dass NetWare den Bildschirm automatisch schließt, dann verwenden Sie die Option --autoclose für mysqld_safe. Ein Beispiel:

    #Starts the MySQL 5.1.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE --autoclose
    
  9. Wenn Sie MySQL installieren – sei es zum ersten Mal oder im Zuge der Aktualisierung von einer vorherigen Version –, dann müssen Sie das aktuellste passende Perl-Modul und die geeigneten PHP-Erweiterungen für NetWare herunterladen:

Das Verhalten von mysqld_safe unter NetWare wird in Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“, detailliert beschrieben.

War auf dem NetWare-Server bereits eine MySQL-Installation vorhanden, dann müssen Sie in jedem Fall in der Datei autoexec.ncf nach MySQL-Startbefehlen suchen und diese nach Bedarf bearbeiten oder löschen.

Hinweis: Für die in den MySQL-Grant-Tabellen aufgeführten Konten gibt es zunächst noch keine Passwörter. Wenn Sie den Server gestartet haben, sollten Sie entsprechend der in Abschnitt 2.9, „Einstellungen und Tests nach der Installation“, beschriebenen Verfahrensweise Passwörter für diese Konten einrichten.

2.7. Installation von MySQL auf anderen Unix-ähnlichen Systemen

Dieser Abschnitt behandelt die Installation der MySQL-Binärdistributionen, die für die verschiedenen Plattformen in Form komprimierter tar-Dateien (d. h. Dateien mit der Erweiterung .tar.gz) vorliegen. Eine detaillierte Liste finden Sie in Abschnitt 2.1.2.5, „MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden“.

Wie Sie sich MySQL beschaffen, lesen Sie in Abschnitt 2.1.3, „Woher man MySQL bekommt“.

Eine tar-Datei mit einer Binärdistribution weist einen Namen mit dem Aufbau mysql-VERSION-OS.tar.gz auf. Hierbei ist VERSION eine Zahl (z. B. 5.1.5-alpha), während OS das Betriebssystem bezeichnet, für das die Distribution vorgesehen ist (beispielsweise pc-linux-i686).

Neben diesen Universalpaketen bieten wir für ausgewählte Plattformen auch Binärdateien in plattformspezifischen Paketformaten an. Weitere Informationen zur Installation dieser Pakete finden Sie in Abschnitt 2.2, „Schnelle Standardinstallation von MySQL“.

Um eine MySQL-Binärdistribution in einer tar-Datei zu installieren, benötigen Sie die folgenden Tools:

  • GNU gunzip zum Dekomprimieren der Distribution.

  • Ein anständiges tar zum Entpacken der Distribution. GNU tar funktioniert bekanntermaßen. Bestimmte Betriebssysteme enthalten eine vorinstallierte Version von tar, die aber offenbar problematisch ist. Beispielsweise haben die tar-Varianten von Mac OS X und Sun Probleme mit langen Dateinamen. Unter Mac OS X können Sie das vorinstallierte Programm gnutar verwenden. Auf anderen Systemen mit fehlerhaften tar-Anwendungen sollten Sie zunächst GNU tar installieren.

Sollten Sie auf Probleme stoßen und einen Fehlerbericht speichern wollen, dann gehen Sie vor wie in Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“, beschrieben.

Die wichtigsten Befehle, die bei der Installation und Verwendung einer MySQL-Binärdistribution ausgeführt werden müssen, sind die folgenden:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

Hinweis: Beim folgenden Vorgang werden keine Passwörter für MySQL-Konten eingerichtet. Wenn Sie den Vorgang abgeschlossen haben, fahren Sie fort bei Abschnitt 2.9, „Einstellungen und Tests nach der Installation“.

Hier nun eine detailliertere Version der vorangegangenen Beschreibung zur Installation einer Binärdistribution:

  1. Fügen Sie einen Anmeldebenutzer und eine Gruppe hinzu, unter denen mysqld ausgeführt wird:

    shell> groupadd mysql
    shell> useradd -g mysql mysql
    

    Diese Befehle fügen die Gruppe mysql und den Benutzer mysql hinzu. Die Syntax für useradd und groupadd kann bei den verschiedenen Unix-Varianten etwas anders aussehen. Auch können die Befehlsnamen selbst variieren (z. B. adduser und addgroup).

    Unter Umständen wollen Sie dem Benutzer und der Gruppe einen anderen Namen als mysql zuweisen. In diesem Fall müssen Sie in den folgenden Schritten den entsprechenden Namen einsetzen.

  2. Wählen Sie das Verzeichnis aus, in das Sie die Distribution entpacken wollen, und rufen Sie dieses auf. Im folgenden Beispiel entpacken wir die Distribution in /usr/local. (Die folgenden Anweisungen setzen deswegen auch voraus, dass Sie Berechtigungen zum Erstellen von Dateien und Verzeichnissen in /usr/local haben. Ist das Verzeichnis geschützt, dann müssen Sie die Installation als root durchführen.)

    shell> cd /usr/local
    
  3. Beschaffen Sie sich wie in Abschnitt 2.1.3, „Woher man MySQL bekommt“, beschrieben eine Distributionsdatei. Die Binärdistributionen für alle Plattformen werden innerhalb eines Releases aus derselben MySQL-Quelldistribution erstellt.

  4. Entpacken Sie die Distribution. Hierdurch wird das Installationsverzeichnis erstellt. Erstellen Sie dann eine symbolische Verknüpfung zu diesem Verzeichnis:

    shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
    shell> ln -s full-path-to-mysql-VERSION-OS mysql
    

    Der Befehl tar erstellt ein Verzeichnis namens mysql-VERSION-OS. Der Befehl ln legt eine symbolische Verknüpfung zu diesem Verzeichnis an. Auf diese Weise können Sie das Installationsverzeichnis einfacher aufrufen als über /usr/local/mysql.

    Bei GNU tar ist kein separater Aufruf von gunzip erforderlich. Sie können die erste Zeile mit dem folgenden Alternativbefehl ersetzen, um die Distribution zu dekomprimieren und zu entpacken:

    shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
    
  5. Wechseln Sie nun in das Installationsverzeichnis:

    shell> cd mysql
    

    Sie werden im Verzeichnis mysql verschiedene Dateien und Unterverzeichnisse vorfinden. Die für die Installation wichtigsten Elemente sind die Unterverzeichnisse bin und scripts:

    • Das Verzeichnis bin enthält Clientprogramme und den Server. Sie sollten den vollständigen Pfadnamen dieses Verzeichnisses zu Ihrer Umgebungsvariablen PATH hinzufügen, damit Ihre Shell die MySQL-Programme korrekt findet. Siehe auch Anhang F, Umgebungsvariablen.

    • Das Verzeichnis scripts enthält das Skript mysql_install_db, welches zur Initialisierung der mysql-Datenbank mit den Grant-Tabellen verwendet wird, in denen die Serverzugriffsberechtigungen gespeichert sind.

  6. Wenn Sie MySQL vorher noch nicht installiert hatten, müssen Sie die MySQL-Grant-Tabellen erstellen:

    shell> scripts/mysql_install_db --user=mysql
    

    Wenn Sie den Befehl als root ausführen, müssen Sie wie gezeigt die Option --user verwenden. Als Wert der Option sollte der Name des Anmeldekontos eingetragen werden, das Sie im ersten Schritt zur Verwendung für die Ausführung des Servers angegeben haben. Wenn Sie den Befehl ausführen, während Sie als dieser Benutzer angemeldet sind, können Sie die Option --user weglassen.

    Nach Erstellung oder Aktualisierung der Grant-Tabellen müssen Sie den Server manuell neu starten.

  7. Weisen Sie als neuen Besitzer der Programmbinärdateien root und als neuen Besitzer des Datenverzeichnisses den Benutzer zu, unter dessen Konto Sie mysqld ausführen. Wenn Sie sich etwa im Installationsverzeichnis (/usr/local/mysql) befinden, sieht der Befehl wie folgt aus:

    shell> chown -R root  .
    shell> chown -R mysql data
    shell> chgrp -R mysql .
    

    Der erste Befehl setzt das Besitzerattribut der Dateien auf den Benutzer root. Der zweite setzt das Besitzerattribut des Datenverzeichnisses auf den Benutzer mysql. Der dritte schließlich setzt das Gruppenattribut auf die Gruppe mysql.

  8. Wenn Sie wollen, dass MySQL beim Starten des Computers automatisch startet, können Sie support-files/mysql.server in das Verzeichnis kopieren, in dem sich die Startdateien Ihres Systems befinden. Weitere Informationen finden Sie im Skript support-files/mysql.server selbst und in Abschnitt 2.9.2.2, „MySQL automatisch starten und anhalten“.

  9. Neue Konten können Sie mit dem Skript bin/mysql_setpermission einrichten, wenn Sie die Perl-Module DBI und DBD::mysql installieren. Informationen zur Vorgehensweise finden Sie in Abschnitt 2.13, „Anmerkungen zur Perl-Installation“.

  10. Wenn Sie mysqlaccess verwenden wollen und Ihre MySQL-Distribution in einem anderen als dem Standardverzeichnis abgelegt ist, müssen Sie die Position ändern, an der mysqlaccess den mysql-Client vorzufinden erwartet. Bearbeiten Sie das Skript bin/mysqlaccess im Bereich von Zeile 18. Suchen Sie nach einer Zeile ähnlich der folgenden:

    $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
    

    Ändern Sie den Pfad so ab, dass er die Position wiedergibt, an der mysql tatsächlich auf Ihrem System gespeichert ist. Andernfalls wird die Fehlermeldung Broken Pipe angezeigt, wenn Sie mysqlaccess ausführen.

Nachdem alles entpackt und installiert wurde, sollten Sie Ihre Distribution testen. Verwenden Sie den folgenden Befehl, um den MySQL Server zu starten:

shell> bin/mysqld_safe --user=mysql &

Wenn der Befehl sofort fehlschlägt und die Meldung mysqld ended ausgibt, finden Sie unter Umständen hilfreiche Informationen in der Datei host_name.err im Datenverzeichnis.

Weitere Informationen zu mysqld_safe können Sie Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“, entnehmen.

Hinweis: Für die in den MySQL-Grant-Tabellen aufgeführten Konten gibt es zunächst noch keine Passwörter. Wenn Sie den Server gestartet haben, sollten Sie entsprechend der in Abschnitt 2.9, „Einstellungen und Tests nach der Installation“, beschriebenen Verfahrensweise Passwörter für diese Konten einrichten.

2.8. Installation der Quelldistribution

Bevor Sie mit einer Installation aus einer Quelldistribution fortfahren, überprüfen Sie zunächst, ob nicht für Ihre Plattform eine Binärdatei von uns angeboten wird, die für Ihre Belange geeignet sein könnte. Wir haben viel Aufwand betrieben, um zu gewährleisten, dass unsere Binärdateien mit den optimalen Optionen erstellt werden.

Wie Sie sich eine MySQL-Quelldistribution beschaffen, erfahren Sie in Abschnitt 2.1.3, „Woher man MySQL bekommt“.

MySQL-Quelldistributionen werden als komprimierte tar-Archive bereitgestellt. Der Dateiname hat den folgenden Aufbau: mysql-VERSION.tar.gz. Hierbei ist VERSION eine Zahl wie beispielsweise 5.1.5-alpha.

Zur Installation von MySQL aus einer Quelldistribution benötigen Sie die folgenden Tools:

  • GNU gunzip zum Dekomprimieren der Distribution.

  • Ein anständiges tar zum Entpacken der Distribution. GNU tar funktioniert bekanntermaßen. Bestimmte Betriebssysteme enthalten eine vorinstallierte Version von tar, die aber offenbar problematisch ist. Beispielsweise haben die tar-Varianten von Mac OS X und Sun Probleme mit langen Dateinamen. Unter Mac OS X können Sie das vorinstallierte Programm gnutar verwenden. Auf anderen Systemen mit fehlerhaften tar-Anwendungen sollten Sie zunächst GNU tar installieren.

  • Einen funktionsfähigen ANSI C++-Compiler. gcc 2.95.2 oder höher, egcs 1.0.2 oder höher oder egcs 2.91.66, SGI C++ und SunPro C++ sind Compiler, die offensichtlich problemlos funktionieren. libg++ wird bei der Verwendung von gcc nicht benötigt. gcc 2.7.x weist einen Fehler auf, der die Kompilierung bestimmter, hundertprozentig zulässiger C++-Dateien wie etwa sql/sql_base.cc unmöglich macht. Wenn Sie nur gcc 2.7.x haben, müssen Sie Ihr gcc so aktualisieren, dass es MySQL kompilieren kann. Auch gcc 2.8.1 weist bekanntermaßen Probleme auf bestimmten Plattformen auf, sollte also ebenfalls außen vor gelassen werden, sofern auf der betreffenden Plattform ein neuerer Compiler verfügbar ist.

    gcc 2.95.2 oder höher wird zur Kompilierung von MySQL 3.23.x empfohlen.

  • Ein gutes make-Programm. GNU make wird immer empfohlen und ist unter Umständen sogar erforderlich. Wenn Sie Probleme haben, dann empfehlen wir GNU make 3.75 oder höher.

Benutzen Sie eine Version von gcc, die neu genug ist, um die Option -fno-exceptions zu kennen, dann ist es extrem wichtig, diese Option auch zu verwenden. Andernfalls kompilieren Sie unter Umständen eine Binärdatei, die zu unvorhersagbaren Zeitpunkten abstürzt. Ferner empfehlen wir die Verwendung von -felide-constructors und -fno-rtti mit -fno-exceptions. Im Zweifelsfall tun Sie Folgendes:

CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
       -fno-exceptions -fno-rtti" ./configure \
       --prefix=/usr/local/mysql --enable-assembler \
       --with-mysqld-ldflags=-all-static

Auf den meisten Systemen erhalten Sie so eine schnelle und stabile Binärdatei.

Sollten Sie auf Probleme stoßen und einen Fehlerbericht speichern wollen, dann gehen Sie vor wie in Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“, beschrieben.

2.8.1. Schnellinstallation, Überblick

Die wichtigsten Befehle, die bei der Installation und Verwendung einer MySQL-Quelldistribution ausgeführt werden müssen, sind die folgenden:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

Wenn Sie von einem Quell-RPM ausgehen, tun Sie Folgendes:

shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm

Auf diese Weise wird ein Binär-RPM erstellt, das Sie installieren können. Bei älteren RPM-Versionen müssen Sie unter Umständen den Befehl rpmbuild durch rpm ersetzen.

Hinweis: Beim folgenden Vorgang werden keine Passwörter für MySQL-Konten eingerichtet. Wenn Sie den Vorgang abgeschlossen haben, fahren Sie fort mit Abschnitt 2.9, „Einstellungen und Tests nach der Installation“, wo Konfiguration und Tests nach der Installation beschrieben sind.

Hier nun eine detailliertere Version der vorangegangenen Beschreibung zur MySQL-Installation aus einer Quelldistribution:

  1. Fügen Sie einen Anmeldebenutzer und eine Gruppe hinzu, unter denen mysqld ausgeführt wird:

    shell> groupadd mysql
    shell> useradd -g mysql mysql
    

    Diese Befehle fügen die Gruppe mysql und den Benutzer mysql hinzu. Die Syntax für useradd und groupadd kann bei den verschiedenen Unix-Varianten etwas anders aussehen. Auch können die Befehlsnamen selbst variieren (z. B. adduser und addgroup).

    Unter Umständen wollen Sie dem Benutzer und der Gruppe einen anderen Namen als mysql zuweisen. In diesem Fall müssen Sie in den folgenden Schritten den entsprechenden Namen einsetzen.

  2. Wählen Sie das Verzeichnis aus, in das Sie die Distribution entpacken wollen, und rufen Sie dieses auf.

  3. Beschaffen Sie sich wie in Abschnitt 2.1.3, „Woher man MySQL bekommt“, beschrieben eine Distributionsdatei.

  4. Entpacken Sie die Distribution in das aktuelle Verzeichnis:

    shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
    

    Dieser Befehl erstellt ein Verzeichnis namens mysql-VERSION.

    Bei GNU tar ist kein separater Aufruf von gunzip erforderlich. Alternativ verwenden Sie den folgenden Befehl zum Dekomprimieren und Entpacken der Distribution:

    shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
    
  5. Wechseln Sie nun in das Stammverzeichnis der entpackten Distribution:

    shell> cd mysql-VERSION
    

    Beachten Sie, dass Sie MySQL derzeit nur von diesem Stammverzeichnis aus installieren können. Sie können es nicht in einem anderen Verzeichnis erstellen.

  6. Konfigurieren Sie den Release und kompilieren Sie alles:

    shell> ./configure --prefix=/usr/local/mysql
    shell> make
    

    Wenn Sie configure ausführen, sollten Sie weitere Optionen festlegen. Führen Sie ./configure --help aus, um eine Liste der Optionen anzuzeigen. Abschnitt 2.8.2, „Typische configure-Optionen“, beschreibt einige der nützlicheren Optionen.

    Wenn Sie eine E-Mail an eine MySQL-Mailingliste senden, weil configure fehlgeschlagen ist und Sie Hilfe benötigen, fügen Sie bitte alle ggf. in der Datei config.log vorhandenen Zeilen hinzu, von denen Sie annehmen, dass sie zur Problembehebung beitragen können. Ferner sollten Sie die letzten paar Zeilen der Ausgabe von configure aufführen. Verwenden Sie zum Übermitteln eines Fehlerberichts die in Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“, beschriebenen Anweisungen.

    Schlägt die Kompilierung fehl, dann finden Sie hilfreiche Informationen in Abschnitt 2.8.4, „Probleme beim Kompilieren?“.

  7. Installieren Sie die Distribution:

    shell> make install
    

    Wenn Sie eine Optionsdatei konfigurieren wollen, verwenden Sie eine der im Verzeichnis support-files vorhandenen Dateien als Vorlage. Ein Beispiel:

    shell> cp support-files/my-medium.cnf /etc/my.cnf
    

    Sie müssen diese Befehle unter Umständen als root ausführen.

    Wenn Sie die Unterstützung für InnoDB-Tabellen konfigurieren wollen, sollten Sie die Datei /etc/my.cnf bearbeiten, das Zeichen # vor den Optionszeilen entfernen, die mit innodb_... beginnen, und die Optionswerte nach Bedarf ändern. Siehe auch Abschnitt 4.3.2, „my.cnf-Optionsdateien“, und Abschnitt 14.2.3, „Konfiguration“.

  8. Wechseln Sie nun in das Installationsverzeichnis:

    shell> cd /usr/local/mysql
    
  9. Wenn Sie MySQL vorher noch nicht installiert hatten, müssen Sie die MySQL-Grant-Tabellen erstellen:

    shell> bin/mysql_install_db --user=mysql
    

    Wenn Sie den Befehl als root ausführen, sollten Sie wie gezeigt die Option --user verwenden. Als Wert der Option sollte der Name des Anmeldekontos eingetragen werden, das Sie im ersten Schritt zur Verwendung für die Ausführung des Servers angegeben haben. Wenn Sie den Befehl ausführen, während Sie als dieser Benutzer angemeldet sind, können Sie die Option --user weglassen.

    Wenn Sie die Grant-Tabellen mit mysql_install_db erstellt haben, müssen Sie den Server manuell neu starten. Wie dies mit dem Befehl mysqld_safe geht, wird in einem späteren Schritt erläutert.

  10. Weisen Sie als neuen Besitzer der Programmbinärdateien root und als neuen Besitzer des Datenverzeichnisses den Benutzer zu, unter dessen Konto Sie mysqld ausführen. Wenn Sie sich etwa im Installationsverzeichnis (/usr/local/mysql) befinden, sieht der Befehl wie folgt aus:

    shell> chown -R root  .
    shell> chown -R mysql var
    shell> chgrp -R mysql .
    

    Der erste Befehl setzt das Besitzerattribut der Dateien auf den Benutzer root. Der zweite setzt das Besitzerattribut des Datenverzeichnisses auf den Benutzer mysql. Der dritte schließlich setzt das Gruppenattribut auf die Gruppe mysql.

  11. Wenn Sie wollen, dass MySQL beim Starten des Computers automatisch startet, können Sie support-files/mysql.server in das Verzeichnis kopieren, in dem sich die Startdateien Ihres Systems befinden. Weitere Informationen finden Sie im Skript support-files/mysql.server selbst und in Abschnitt 2.9.2.2, „MySQL automatisch starten und anhalten“.

  12. Neue Konten können Sie mit dem Skript bin/mysql_setpermission einrichten, wenn Sie die Perl-Module DBI und DBD::mysql installieren. Informationen zur Vorgehensweise finden Sie in Abschnitt 2.13, „Anmerkungen zur Perl-Installation“.

Nachdem alles installiert wurde, sollten Sie Ihre Distribution testen. Verwenden Sie den folgenden Befehl, um den MySQL Server zu starten:

shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &

Wenn der Befehl sofort fehlschlägt und die Meldung mysqld ended ausgibt, finden Sie unter Umständen hilfreiche Informationen in der Datei host_name.err im Datenverzeichnis.

Weitere Informationen zu mysqld_safe können Sie Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“, entnehmen.

Hinweis: Für die in den MySQL-Grant-Tabellen aufgeführten Konten gibt es zunächst noch keine Passwörter. Wenn Sie den Server gestartet haben, sollten Sie entsprechend der in Abschnitt 2.9, „Einstellungen und Tests nach der Installation“, beschriebenen Verfahrensweise Passwörter für diese Konten einrichten.

2.8.2. Typische configure-Optionen

Das Skript configure bietet Ihnen umfassende Kontrolle darüber, wie Sie Ihre MySQL-Quelldistribution konfigurieren. Normalerweise werden Sie dies mithilfe der Optionen von configure an der Befehlszeile tun. Sie können configure auch über bestimmte Umgebungsvariablen beeinflussen. Siehe auch Anhang F, Umgebungsvariablen. Eine Liste der Optionen, die von configure unterstützt werden, erhalten Sie nach Ausführen des folgenden Befehls:

shell> ./configure --help

In der Folge wollen wir einige der häufiger verwendeten Optionen von configure beschreiben:

  • Um nur die Clientbibliotheken und -programme von MySQL (und nicht den Server) zu kompilieren, verwenden Sie die Option --without-server:

    shell> ./configure --without-server
    

    Wenn Sie keinen C++-Compiler haben, kann mysql nicht kompiliert werden (dies ist das einzige Clientprogramm, das C++ erfordert). In diesem Fall können Sie den Code, der das Vorhandensein des C++-Compilers prüft, aus configure entfernen und dann ./configure mit der Option --without-server ausführen. In diesem Fall wird bei der Kompilierung zwar versucht, mysql zu erstellen, aber Sie können alle Warnungen bezüglich mysql.cc ignorieren. (Wenn make stehen bleibt, geben Sie make -k ein, um das System anzuweisen, die Erstellung auch bei Auftreten von Fehlern abzuschließen.)

  • Wenn Sie die eingebettete MySQL-Bibliothek (libmysqld.a) erstellen wollen, verwenden Sie die Option --with-embedded-server.

  • Wenn Sie nicht wollen, dass Ihre Logdateien und die Datenbankverzeichnisse in /usr/local/var abgelegt werden, verwenden Sie configure in der Art wie folgt:

    shell> ./configure --prefix=/usr/local/mysql
    shell> ./configure --prefix=/usr/local \
               --localstatedir=/usr/local/mysql/data
    

    Der erste Befehl ändert das Installationspräfix, sodass alles in /usr/local/mysql (statt wie standardmäßig vorgesehen in /usr/local) installiert wird. Der zweite Befehl belässt das Installationsstandardpräfix zwar, ersetzt aber die Standardposition der Datenbankverzeichnisse (normalerweise /usr/local/var) durch /usr/local/mysql/data.

    Sie können die Positionen auch zum Zeitpunkt des Serverstarts angeben, indem Sie sie in die MySQL-Optionsdatei eintragen. Siehe auch Abschnitt 4.3.2, „my.cnf-Optionsdateien“.

  • Wenn Sie Unix verwenden und die MySQL-Socketdatei an einer anderen Position als im Standardverzeichnis (normalerweise /tmp oder /var/run) ablegen wollen, verwenden Sie den configure-Befehl wie folgt:

    shell> ./configure \
               --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
    

    Der Socketdateiname muss ein absoluter Pfadname sein. Sie können die Position von mysql.sock mithilfe einer Optionsdatei auch zum Zeitpunkt des Serverstarts einstellen. Siehe auch Abschnitt A.4.5, „Wie Sie die MySQL-Socketdatei /tmp/mysql.sock schützen oder ändern“.

  • Wenn Sie statisch verknüpfte Programme kompilieren wollen, um etwa eine Binärdistribution zu erstellen, die Leistung zu optimieren oder Probleme mit bestimmten Red Hat Linux-Distributionen zu umgehen, dann führen Sie configure wie folgt aus:

    shell> ./configure --with-client-ldflags=-all-static \
               --with-mysqld-ldflags=-all-static
    
  • Wenn Sie gcc einsetzen und libg++ oder libstdc++ nicht installiert haben, können Sie configure anweisen, gcc als C++-Compiler zu verwenden:

    shell> CC=gcc CXX=gcc ./configure
    

    Verwenden Sie gcc als C++-Compiler, dann wird keine Verknüpfung mit libg++ oder libstdc++ probiert. Dies kann auch dann von Vorteil sein, wenn Sie die betreffenden Bibliotheken installiert haben. In Verbindung mit einigen Versionen dieser Bibliotheken sind bei MySQL-Benutzern in der Vergangenheit nicht nachvollziehbare Probleme aufgetreten.

    Die folgende Liste führt einige Compiler auf. Ferner aufgelistet sind die zugehörigen Einstellungen für Umgebungsvariablen.

    • gcc 2.7.2:

      CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
      
    • egcs 1.0.3a:

      CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors \
      -fno-exceptions -fno-rtti"
      
    • gcc 2.95.2:

      CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
      -felide-constructors -fno-exceptions -fno-rtti"
      
    • pgcc 2.90.29 oder höher:

      CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
      CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
      -felide-constructors -fno-exceptions -fno-rtti"
      

    In den meisten Fällen erhalten Sie eine vernünftig optimierte MySQL-Binärdatei, wenn Sie die Optionen der vorangegangenen Tabelle verwenden und die folgenden Optionen in der configure-Befehlszeile hinzufügen:

    --prefix=/usr/local/mysql --enable-assembler \
    --with-mysqld-ldflags=-all-static
    

    Mit anderen Worten: Die vollständige configure-Zeile würde bei allen aktuellen gcc-Versionen ungefähr wie folgt aussehen:

    CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
    -felide-constructors -fno-exceptions -fno-rtti" ./configure \
    --prefix=/usr/local/mysql --enable-assembler \
    --with-mysqld-ldflags=-all-static
    

    Alle von uns auf der MySQL-Website unter http://dev.mysql.com/downloads/ bereitgestellten Binärdateien wurden mit optimalen Einstellungen kompiliert und sollten für die meisten Benutzer perfekt geeignet sein. Siehe auch Abschnitt 2.1.2.5, „MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden“. Es gibt einige Konfigurationseinstellungen, durch deren Optimierung Sie eine noch schnellere Binärdatei erstellen können. Diese Einstellungen sind jedoch nur für fortgeschrittene Benutzer geeignet. Siehe auch Abschnitt 7.5.4, „Wie Kompilieren und Linken die Geschwindigkeit von MySQL beeinflusst“.

    Schlägt die Erstellung fehl und werden Fehlermeldungen erzeugt, weil Ihr Compiler oder Linker die gemeinsame Bibliothek libmysqlclient.so.N nicht erstellen konnte (wobei N eine Versionsnummer ist), dann können Sie dieses Problem umgehen, indem Sie die Option --disable-shared für configure ergänzen. In diesem Fall erstellt configure die gemeinsame Bibliothek libmysqlclient.so.N nicht.

  • Standardmäßig verwendet MySQL den Zeichensatz latin1 (cp1252 West European). Um den Standardzeichensatz zu ändern, verwenden Sie die Option --with-charset:

    shell> ./configure --with-charset=CHARSET
    

    CHARSET kann einen der folgenden Werte annehmen: big5, cp1251, cp1257, czech, danish, dec8, dos, euc_kr, gb2312, gbk, german1, hebrew, hp8, hungarian, koi8_ru, koi8_ukr, latin1, latin2, sjis, swe7, tis620, ujis, usa7 oder win1251ukr. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.

    Die Standardsortierung kann ebenfalls angegeben werden. Standardmäßig verwendet MySQL die Sortierung latin1_swedish_ci. Um diese Sortierung zu ändern, verwenden Sie die Option --with-collation:

    shell> ./configure --with-collation=COLLATION
    

    Wollen Sie Zeichensatz und Sortierung gleichzeitig ändern, dann verwenden Sie einfach beide Optionen --with-charset und --with-collation. Die Sortierung muss für den gewählten Zeichensatz zulässig sein. (Mit der Anweisung SHOW COLLATION können Sie die für den jeweiligen Zeichensatz zulässige Sortierung ermitteln.)

    Wenn Sie Zeichen zwischen Server und Client konvertieren wollen, dann sollten Sie einen Blick auf die Anweisung SET NAMES werfen. Siehe auch Abschnitt 13.5.3, „SET, und Abschnitt 10.4, „Verbindungszeichensatz und -sortierfolge“.

    Warnung: Wenn Sie den Zeichensatz ändern, nachdem Sie bereits Tabellen erstellt haben, müssen Sie myisamchk -r -q --set-collation=collation_name für jede Tabelle ausführen. Andernfalls werden Ihre Indizes unter Umständen falsch sortiert. Dies kann passieren, wenn Sie MySQL installieren, einige Tabellen erstellen und nachfolgend MySQL so umkonfigurieren, dass ein anderer Zeichensatz verwendet wird, und dann neu installieren.

    Mit der configure-Option --with-extra-charsets=LIST können Sie definieren, welche zusätzlichen Zeichensätze in den Server einkompiliert werden sollen. LIST hat dabei einen der folgenden Werte:

    • eine Liste von Zeichensatznamen, die durch Leerzeichen getrennt sind

    • complex, wenn alle Zeichensätze enthalten sein sollen, die sich nicht dynamisch laden lassen

    • all, wenn grundsätzlich alle Zeichensätze in den Binärdateien enthalten sein sollen

  • Um MySQL mit Debugging-Code zu konfigurieren, verwenden Sie die Option --with-debug:

    shell> ./configure --with-debug
    

    Auf diese Weise wird eine sichere Speicherzuweisung in die Konfiguration integriert, die in der Lage ist, bestimmte Fehler zu finden und Informationen zu den Abläufen zu vermitteln. Siehe auch Abschnitt E.1, „Einen MySQL-Server debuggen“.

  • Wenn Ihre Clientprogramme Threads verwenden, müssen Sie eine Thread-sichere Version der MySQL-Clientbibliothek mit der Konfigurationsoption --enable-thread-safe-client erstellen. Auf diese Weise wird eine Bibliothek libmysqlclient_r angelegt, mit der Sie Ihre Thread-basierten Anwendungen verknüpfen sollten. Siehe auch Abschnitt 24.2.15, „Wie man einen Thread-Client herstellt“.

  • Es ist möglich, MySQL mit Unterstützung für große Tabellen zu erstellen. Hierzu verwenden Sie die Option --with-big-tables.

    Diese Option sorgt dafür, dass die Variablen, die die Ergebnisse der Datensatzzählungen enthalten, als unsigned long long statt als unsigned long gespeichert werden. Sie erlaubt Tabellen die Aufnahme von ca. 1,844E+19 ((232)2) Datensätzen statt 232 (ca. 4,295E+09) Datensätzen. Zuvor war es notwendig gewesen, -DBIG_TABLES manuell an den Compiler zu übergeben, um diese Funktion zu aktivieren.

  • Optionen, die spezifisch für bestimmte Betriebssysteme sind, finden Sie in den jeweiligen Abschnitten dieses Handbuchs. Siehe auch Abschnitt 2.12, „Betriebssystemspezifische Anmerkungen“.

2.8.3. Installation vom Entwicklungs-Source-Tree

Vorsicht: Sie sollten diesen Abschnitt nur lesen, wenn Sie Interesse daran haben, uns beim Testen unseres neuen Codes behilflich zu sein. Wenn Sie MySQL lediglich in funktionsfähiger Form auf Ihrem System einrichten wollen, sollten Sie einen Standard-Release (entweder als Binär- oder als Quelldistribution) verwenden.

Um unseren aktuellsten Entwicklungs-Source-Tree zu bekommen, laden Sie zunächst den kostenlosen BitKeeper-Client herunter, sofern Sie ihn noch nicht haben, und installieren ihn. Sie erhalten den Client unter http://www.bitmover.com/bk-client.shar.

Zur Installation des BitKeeper-Clients unter Unix verwenden Sie die folgenden Befehle:

shell> sh bk-client.shar
shell> cd bk_client-1.1
shell> make all
shell> PATH=$PWD:$PATH

Zur Installation des BitKeeper-Clients unter Windows gehen Sie wie folgt vor:

  1. Laden Sie Cygwin von http://cygwin.com herunter und installieren Sie es.

  2. Vergewissern Sie sich, dass gcc und make unter Cygwin installiert wurden. Sie können dies überprüfen, indem Sie die Befehle which gcc und which make absetzen. Ist eines der Programme nicht installiert, dann führen Sie den Paket-Manager von Cygwin aus, wählen gcc und/oder make und führen die Installation aus.

  3. Führen Sie dann unter Cygwin die folgenden Befehle aus:

    shell> sh bk-client.shar
    shell> cd bk_client-1.1
    

    Nachfolgend bearbeiten Sie das Makefile und ändern die Zeile $(CC) $(CFLAGS) -o sfio -lz sfio.c wie folgt:

    $(CC) $(CFLAGS) -o sfio sfio.c -lz
    

    Nun führen Sie den Befehl make aus und stellen den Pfad ein:

    shell> make all
    shell> PATH=$PWD:$PATH
    

Der kostenlose BitKeeper-Client wird mit seinem Quellcode ausgeliefert. Dieser Quellcode ist auch die einzige Dokumentation, die für den kostenlosen Client verfügbar ist.

Nachdem Sie den BitKeeper-Client installiert haben, können Sie auf den MySQL-Entwicklungs-Source-Tree zugreifen:

  1. Wechseln Sie in das Verzeichnis, das als Arbeitsverzeichnis vorgesehen ist, und erstellen Sie mit dem folgenden Befehl eine lokale Kopie des Zweigs von MySQL 5.1:

    shell> sfioball -r+ bk://mysql.bkbits.net/mysql-5.1-new mysql-5.1
    

    In obigem Beispiel wird der Source-Tree im Unterverzeichnis mysql-5.1/ Ihres aktuellen Verzeichnisses eingerichtet.

    Der erste Download des Source-Trees kann je nach Geschwindigkeit Ihrer Verbindung eine Weile dauern. Haben Sie bitte Geduld.

  2. Sie benötigen GNU make, autoconf 2.58 (oder höher), automake 1.8, libtool 1.5 und m4, um die nächste Befehlsgruppe auszuführen. Zwar werden viele Betriebssysteme mit eigener Implementierung von make ausgeliefert, aber die Wahrscheinlichkeit, dass der Kompilierungsvorgang mit merkwürdigen Fehlermeldungen abbricht, ist doch recht hoch. Aus diesem Grund wird dringend empfohlen, stattdessen GNU make (das manchmal auch als gmake bezeichnet wird) zu verwenden.

    Glücklicherweise wird eine große Anzahl von Betriebssystemen mit vorinstallierten GNU-Tools ausgeliefert oder enthält deren Installationspakete. In jedem Fall können Sie sie auch unter den folgenden Adressen herunterladen:

    Um MySQL 5.1 zu konfigurieren, benötigen Sie ferner GNU bison 1.75 oder höher. Ältere Versionen von bison zeigen unter Umständen folgenden Fehler an:

    sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
    

    Hinweis: Die maximale Tabellengröße wurde mitnichten überschritten; vielmehr wird der Fehler von Bugs in älteren bison-Versionen ausgelöst.

    Das folgende Beispiel zeigt die typischen Befehle, die zur Konfiguration eines Source-Trees erforderlich sind. Der erste Befehl cd wechselt in das oberste Verzeichnis des Trees. Hierbei ist mysql-5.1 durch den korrekten Verzeichnisnamen zu ersetzen.

    shell> cd mysql-5.1
    shell> aclocal; autoheader
    shell> libtoolize --automake --force
    shell> automake --force --add-missing; autoconf
    shell> (cd storage/innobase; aclocal; autoheader; autoconf; automake)
    shell> (cd storage/bdb/dist; sh s_all)
    shell> ./configure  # Add your favorite options here
    shell> make
    

    Alternativ verwenden Sie BUILD/autorun.sh als Abkürzung für die folgende Befehlssequenz:

    shell> aclocal; autoheader
    shell> libtoolize --automake --force
    shell> automake --force --add-missing; autoconf
    shell> (cd storage/innobase; aclocal; autoheader; autoconf; automake)
    shell> (cd storage/bdb/dist; sh s_all)
    

    Die Befehlszeilen, die in die Verzeichnisse storage/innobase bzw. storage/bdb/dist wechseln, dienen der Konfiguration der InnoDB- und Berkeley DB(BDB)-Speicher-Engines. Sie können diese Befehlszeilen weglassen, wenn Sie Unterstützung für InnoDB bzw. BDB nicht benötigen.

    Hinweis: Ab MySQL 5.1 wird Code, der spezifisch für bestimmte Speicher-Engines ist, in ein storage-Verzeichnis verschoben. So liegt beispielsweise InnoDB-Code jetzt in storage/innobase und NDBCluster-Code in storage/ndb.

    Wenn Ihnen in dieser Phase seltsame Fehler angezeigt werden, dann vergewissern Sie sich, dass libtool wirklich installiert wurde.

    Eine Sammlung unserer Standardkonfigurationsskripten befindet sich im Unterverzeichnis BUILD/. Unter Umständen finden Sie es praktischer, statt der vorangegangenen Gruppe von Shell-Befehlen das Skript BUILD/compile-pentium-debug zu verwenden. Um auf einer anderen Architektur zu kompilieren, ändern Sie das Skript ab, indem Sie Pentium-spezifische Flags entfernen.

  3. Wenn die Erstellung abgeschlossen ist, führen Sie make install aus. Auf einem Produktionssystem sollten Sie dies allerdings mit Vorsicht tun: Es besteht die Möglichkeit, dass der Befehl die aktuelle Release-Installation überschreibt. Wenn bereits eine MySQL-Installation vorhanden ist, empfehlen wir die Ausführung von ./configure unter Zuweisung anderer als der für den Produktionsserver verwendeten Werte für die Optionen --prefix, --with-tcp-port und --unix-socket-path.

  4. Prüfen Sie Ihre neue Installation auf Herz und Nieren und versuchen Sie, die neuen Funktionen zum Absturz zu bringen. Führen Sie zunächst make test aus. Siehe auch Abschnitt 26.1.2, „MySQL-Testsystem“.

  5. Wenn Sie es bis zur make-Phase geschafft haben, aber die Distribution sich nicht kompilieren lässt, dann geben Sie das Problem in unsere Fehlerdatenbank ein. Beachten Sie hierzu die Anweisungen in Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“. Haben Sie die aktuellen Versionen der erforderlichen GNU-Tools installiert und stürzen diese bei der Verarbeitung unserer Konfigurationsdateien ebenfalls ab, dann teilen Sie uns bitte auch dies mit. Wenn Sie allerdings aclocal ausführen und die Fehlermeldung command not found o. ä. erhalten, melden Sie dies bitte nicht. Überprüfen Sie stattdessen, ob alle notwendigen Tools installiert sind und Ihre Variable PATH korrekt eingestellt ist, damit Ihre Shell sie finden kann.

  6. Wenn Sie das Repository mit sfioball kopiert haben, um den Source-Tree zu erhalten, sollten Sie regelmäßig update ausführen, um Ihre lokale Kopie zu aktualisieren. Zu diesem Zweck können Sie nach der Konfiguration des Repositorys jederzeit den folgenden Befehl verwenden:

    shell> update bk://mysql.bkbits.net/mysql-5.1-new
    
  7. Sie können die Änderungshistorie des Trees mit allen Diffs überprüfen, indem Sie die Datei BK/ChangeLog im Source-Tree anzeigen und nach den dort aufgelisteten ChangeSet-Beschreibungen suchen. Um ein bestimmtes Changeset zu untersuchen, müssten Sie mit dem Befehl sfioball zwei bestimmte Revisionen des Source-Trees extrahieren und dann einen externen diff-Befehl aufrufen, um den Vergleich durchzuführen. Wenn Sie über ein paar spaßige Diffs oder über Code stolpern, zu dem Sie Fragen haben, schicken Sie einfach eine E-Mail an die MySQL-Mailingliste internals. Siehe auch Abschnitt 1.7.1, „Die MySQL-Mailinglisten“. Auch wenn Sie eine gute Idee haben, wie man etwas vielleicht besser lösen könnte, schicken Sie ruhig eine E-Mail mit einem Patch an die Liste.

Changesets, Anmerkungen und Quellcode können Sie auch online durchsuchen. Um die entsprechenden Informationen für MySQL 5.1 anzuzeigen, besuchen Sie http://mysql.bkbits.net:8080/mysql-5.1.

2.8.4. Probleme beim Kompilieren?

Alle MySQL-Programme lassen sich bei uns mit gcc sauber und ohne Warnungen unter Solaris oder Linux kompilieren. Auf anderen Systemen werden aufgrund von Unterschieden in den systemspezifischen Include-Dateien unter Umständen Warnungen angezeigt. Informationen dazu, welche Warnungen bei der Verwendung von MIT-pthreads angezeigt werden können, finden Sie in Abschnitt 2.8.5, „Anmerkungen zu MIT-pthreads“. Informationen zu anderen Problemen entnehmen Sie der folgenden Liste.

Die Lösung zahlreicher Probleme erfordert eine Umkonfiguration. Wenn Sie eine Umkonfiguration durchführen müssen, beachten Sie bitte die folgenden Hinweise:

  • Wird configure nach einem vorherigen Aufruf erneut ausgeführt, dann werden unter Umständen Daten zugrunde gelegt, die während des vorherigen Aufrufs ermittelt worden waren. Diese Informationen sind in der Datei config.cache abgelegt. Nach dem Start prüft configure auf das Vorhandensein dieser Datei und liest ihren Inhalt ggf. aus – davon ausgehend, dass die Daten nach wie vor korrekt sind. Dies ist allerdings bei einer Umkonfigurierung nicht mehr der Fall.

  • Jedes Mal, wenn Sie configure ausführen, müssen Sie zur Neukompilierung auch make erneut ausführen. Allerdings sollten Sie alte Objektdateien aus vorherigen Builds entfernen, da diese mit abweichenden Konfigurationsoptionen erstellt wurden.

Um die Verwendung veralteter Konfigurationsdaten oder Objektdateien zu verhindern, führen Sie die folgenden Befehle aus, bevor Sie configure erneut aufrufen:

shell> rm config.cache
shell> make clean

Alternativ können Sie auch make distclean ausführen.

Die folgende Liste enthält die bei der Kompilierung von MySQL am häufigsten auftretenden Probleme:

  • Wenn Sie bei der Kompilierung von sql_yacc.cc Fehler wie die hier aufgeführten erhalten, ist offensichtlich nicht genug Arbeits- oder Auslagerungsspeicher vorhanden.

    Internal compiler error: program cc1plus got fatal signal 11
    Out of virtual memory
    Virtual memory exhausted
    

    Das Problem besteht darin, dass gcc zur Kompilierung von sql_yacc.cc mit Inline-Funktionen eine gewaltige Menge Speicher benötigt. Versuchen Sie in diesem Fall, configure mit der Option --with-low-memory auszuführen:

    shell> ./configure --with-low-memory
    

    Diese Option ergänzt die Kompilierungszeile um den Eintrag -fno-inline, wenn Sie gcc verwenden, bzw. um -O0 bei Verwendung eines anderen Tools. Sie sollten die Option --with-low-memory auch dann verwenden, wenn Sie der Ansicht sind, dass so viel Arbeits- und Auslagerungsspeicher vorhanden ist, dass ein Speichermangel nicht wahrscheinlich ist. Dieses Problem wurde sogar schon auf Systemen mit wirklich großzügigen Hardwarekonfigurationen beobachtet und konnte stets mit der Option --with-low-memory behoben werden.

  • Standardmäßig wählt configure c++ als Compiler-Namen aus, und GNU c++ verknüpft sich mit -lg++. Wenn Sie gcc verwenden, dann kann dieses Verhalten während der Konfiguration zu Problemen wie dem folgenden führen:

    configure: error: installation or configuration problem:
    C++ compiler cannot create executables.
    

    Ferner könnten Sie während der Kompilierung Probleme in Bezug auf g++, libg++ oder libstdc++ beobachten.

    Eine Ursache dieser Probleme besteht darin, dass Sie g++ entweder nicht haben oder dass Sie g++, nicht jedoch libg++ oder libstdc++ haben. Werfen Sie einen Blick in die Datei config.log. Sie sollten den Grund dafür, dass Ihr C++-Compiler nicht funktioniert, exakt angeben. Um derartige Probleme zu vermeiden, können Sie gcc als C++-Compiler verwenden. Setzen Sie die Umgebungsvariable CXX versuchsweise auf "gcc -O3". Ein Beispiel:

    shell> CXX="gcc -O3" ./configure
    

    Dies funktioniert, weil gcc C++-Quelldateien ebenso kompiliert, wie es g++ tut, jedoch standardmäßig keine Verknüpfung mit libg++ oder libstdc++ herstellt.

    Eine andere Möglichkeit, diese Probleme zu beheben, besteht in der Installation von g++, libg++ und libstdc++. Allerdings raten wir von der Verwendung von libg++ oder libstdc++ mit MySQL ab, da hierdurch nur die mysqld-Binärdatei vergrößert wird – Vorteile ergeben sich ansonsten keine. In Verbindung mit einigen Versionen dieser Bibliotheken sind bei MySQL-Benutzern in der Vergangenheit nicht nachvollziehbare Probleme aufgetreten.

  • Bricht Ihre Kompilierung mit Fehlern wie dem folgenden ab, dann müssen Sie Ihre make-Version auf GNU make aktualisieren:

    making all in mit-pthreads
    make: Fatal error in reader: Makefile, line 18:
    Badly formed macro assignment
    

    Oder:

    make: file `Makefile' line 18: Must be a separator (:
    

    Oder:

    pthread.h: No such file or directory
    

    Es ist bekannt, dass Solaris und FreeBSD problematische make-Programme umfassen.

    GNU make 3.75 funktioniert erfahrungsgemäß.

  • Wenn Sie Flags für die Verwendung durch Ihre C- oder C++-Compiler definieren wollen, sollten Sie dies tun, indem Sie die Flags den Umgebungsvariablen CFLAGS und CXXFLAGS hinzufügen. Sie können auf diese Weise auch die Compiler-Namen über CC und CXX angeben. Ein Beispiel:

    shell> CC=gcc
    shell> CFLAGS=-O3
    shell> CXX=gcc
    shell> CXXFLAGS=-O3
    shell> export CC CFLAGS CXX CXXFLAGS
    

    In Abschnitt 2.1.2.5, „MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden“, finden Sie eine Liste der Flag-Definitionen, die sich bei verschiedenen Systemen als nützlich erwiesen haben.

  • Wenn Sie bei der Kompilierung von mysqld Fehlermeldungen wie die nachfolgend gezeigte erhalten, hat configure den Typ des letzten Arguments von accept(), getsockname() oder getpeername() nicht korrekt erkannt:

    cxx: Error: mysqld.cc, line 645: In this statement, the referenced
         type of the pointer value ''length'' is ''unsigned long'',
         which is not compatible with ''int''.
    new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
    

    Um dieses Problem zu beheben, bearbeiten Sie die Datei config.h (diese wird durch configure erzeugt). Suchen Sie dort nach den folgenden Zeilen:

    /* Define as the base type of the last arg to accept */
    #define SOCKET_SIZE_TYPE XXX
    

    Setzen Sie XXX je nach Betriebssystem auf size_t oder int. (Sie müssen dies bei jeder Ausführung von configure tun, da configure config.h immer neu erstellt.)

  • Die Datei sql_yacc.cc wird aus sql_yacc.yy erstellt. Normalerweise muss bei der Erstellung keine Datei sql_yacc.cc erzeugt werden, da MySQL bereits eine vorab generierte Kopie enthält. Sofern Sie sie aber trotzdem neu erstellen müssen, könnte unter Umständen folgende Fehlermeldung angezeigt werden:

    "sql_yacc.yy", line xxx fatal: default action causes potential ...
    

    Dies weist darauf hin, dass Ihre Version von yacc fehlerhaft ist. Sie müssen stattdessen wahrscheinlich bison (die GNU-Variante von yacc) installieren und verwenden.

  • Unter Debian Linux 3.0 müssen Sie gawk anstelle des standardmäßigen mawk installieren, wenn Sie MySQL mit Berkeley DB-Unterstützung kompilieren wollen.

  • Wenn Sie mysqld oder einen MySQL-Client debuggen müssen, führen Sie configure mit der Option --with-debug aus. Kompilieren Sie Ihre Clients dann neu und verknüpfen Sie sie mit der neuen Clientbibliothek. Siehe auch Abschnitt E.2, „Einen MySQL-Client debuggen“.

  • Unter Umständen erhalten Sie unter Linux (z. B. bei SuSE Linux 8.1 oder Red Hat Linux 7.3) einen Kompilierungsfehler ähnlich dem folgenden:

    libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from
    incompatible pointer type
    libmysql.c:1329: too few arguments to function `gethostbyname_r'
    libmysql.c:1329: warning: assignment makes pointer from integer
    without a cast
    make[2]: *** [libmysql.lo] Error 1
    

    Standardmäßig versucht das configure-Skript, die korrekte Anzahl der Argumente mithilfe des GNU C++-Compilers g++ zu ermitteln. Dieser Test führt zu falschen Ergebnissen, wenn g++ nicht installiert ist. Es gibt zwei Möglichkeiten, dieses Problem zu umgehen:

    • Stellen Sie sicher, dass der GNU-C++-Compiler g++ installiert ist. Bei manchen Linux-Distributionen heißt das erforderliche Paket gpp, bei anderen gcc-c++.

    • Verwenden Sie gcc als C++-Compiler, indem Sie die Umgebungsvariable CXX auf gcc setzen:

      export CXX="gcc"
      

    Welche Änderungen Sie auch immer durchgeführt haben, nachfolgend müssen Sie configure erneut ausführen.

2.8.5. Anmerkungen zu MIT-pthreads

In diesem Abschnitt werden einige Probleme in Zusammenhang mit MIT-pthreads angesprochen.

Unter Linux sollten Sie MIT-pthreads nicht verwenden. Benutzen Sie stattdessen die installierte LinuxThreads-Implementierung. Siehe auch Abschnitt 2.12.1, „Linux (alle Linux-Versionen)“.

Wenn Ihr System keine native Thread-Unterstützung bietet, sollten Sie MySQL mithilfe des MIT-pthreads-Pakets erstellen. Dies gilt für ältere FreeBSD-Systeme, SunOS 4.x, Solaris 2.4 und früher sowie einige andere. Siehe auch Abschnitt 2.1.1, „Betriebssysteme, die von MySQL unterstützt werden“.

MIT-pthreads ist nicht in der Quelldistribution von MySQL 5.1 enthalten. Wenn Sie dieses Paket benötigen, müssen Sie es unter http://dev.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz separat herunterladen.

Extrahieren Sie das Quellarchiv nach dem Download in das oberste MySQL-Quellverzeichnis. Hierdurch wird ein neues Unterverzeichnis namens mit-pthreads erstellt.

  • Auf den meisten Systemen können Sie die Verwendung von MIT-pthreads erzwingen, indem Sie configure mit der Option --with-mit-threads ausführen:

    shell> ./configure --with-mit-threads
    

    Die Erstellung eines Nichtquellverzeichnisses wird bei der Verwendung von MIT-pthreads nicht unterstützt, da wir unsere Änderungen an diesem Code minimieren wollen.

  • Die Tests, mit denen ermittelt wird, ob MIT-pthreads verwendet werden soll, finden nur während derjenigen Phase des Konfigurationsvorgangs statt, in der der Servercode bearbeitet wird. Haben Sie die Distribution mit der Option --without-server konfiguriert, um nur den Clientcode zu erstellen, dann wissen die Clients nicht, ob MIT-pthreads verwendet wird oder nicht; deswegen verwenden sie standardmäßig die Unix-Socketdatei. Da Unix-Socketdateien jedoch auf bestimmten Plattformen unter MIT-pthreads nicht funktionieren, bedeutet dies, dass Sie -h oder --host mit einem anderen Wert als localhost verwenden müssen, wenn Sie Clientprogramme ausführen.

  • Wird MySQL mit MIT-pthreads kompiliert, dann wird die Systemsperrung zum Zweck der Leistungsoptimierung standardmäßig deaktiviert. Mit der Option --external-locking können Sie den Server anweisen, die Systemsperre zu verwenden. Dies ist aber nur erforderlich, wenn Sie zwei MySQL Server ausführen, die auf die gleichen Datendateien zugreifen (hiervon sei aber ohnehin abgeraten).

  • Manchmal schlägt beim pthread-Befehl bind() der Versuch fehl, eine Bindung an den Server vorzunehmen – und dies, ohne dass (zumindest bei Solaris) eine Fehlermeldung erzeugt wird. Nachfolgend schlagen alle Verbindungen zu diesem Server fehl. Ein Beispiel:

    shell> mysqladmin version
    mysqladmin: connect to server at '' failed;
    error: 'Can't connect to mysql server on localhost (146)'
    

    Die Lösung dieses Problems besteht in Terminierung und Neustart des Servers mysqld. Dies ist bei uns nur aufgetreten, wenn wir den Server zwangsweise beendet und unmittelbar darauf neu gestartet haben.

  • Bei MIT-pthreads ist der Systemaufruf sleep() nicht durch SIGINT (Pause) zu unterbrechen. Dies macht sich nur bemerkbar, wenn Sie mysqladmin --sleep ausführen. Sie müssen warten, bis der Aufruf sleep() abgeschlossen ist, bevor der Interrupt bedient und der Prozess angehalten wird.

  • Beim Verknüpfen erhalten Sie (wiederum zumindest unter Solaris) unter Umständen Warnmeldungen wie die folgende, die Sie aber getrost ignorieren können:

    ld: warning: symbol `_iob' has differing sizes:
        (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
    file /usr/lib/libc.so value=0x140);
        /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
    ld: warning: symbol `__iob' has differing sizes:
        (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
    file /usr/lib/libc.so value=0x140);
        /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
    
  • Bestimmte andere Warnungen können ebenfalls ignoriert werden:

    implicit declaration of function `int strtoll(...)'
    implicit declaration of function `int strtoul(...)'
    
  • Wir haben es nicht geschafft, die Verwendung von readline mit MIT-pthreads zu ermöglichen. (Das ist zwar auch nicht notwendig, mag für manchen aber von Interesse sein.)

2.8.6. Windows-Quelldistribution

Diese Anweisungen beschreiben, wie man unter Windows Binärdateien aus dem Quellcode von MySQL 5.1 erstellt. Die Anweisungen beziehen sich auf die Erstellung von Binärdateien aus einer Standardquelldistribution oder aus dem BitKeeper-Tree, der den aktuellen Entwicklungsquellcode enthält.

Hinweis: Die Angaben in diesem Abschnitt sind ausschließlich für Benutzer vorgesehen, die ein der aktuellen Quelldistribution oder dem BitKeeper-Tree entstammendes MySQL unter Windows testen wollen. Von der Verwendung eines aus dem Quellcode selbsterstellten MySQL Servers in Produktionsumgebungen rät MySQL AB ausdrücklich ab. In der Regel ist es am besten, vorkompilierte MySQL-Binärdistributionen zu verwenden, die von MySQL AB gezielt für optimale Leistung unter Windows erstellt wurden. Anweisungen zur Installation einer Binärdistribution finden Sie in Abschnitt 2.3, „Installation von MySQL unter Windows“.

Um MySQL unter Windows aus dem Quellcode zu erstellen, benötigen Sie die folgenden Compiler und Ressourcen auf Ihrem Windows-System:

  • Visual Studio 2003-Compilersystem (VC++ 7.0)

  • Zwischen 3 und 5 Gbyte Festplattenspeicher

  • Windows 2000 oder höher

Die exakten Systemvoraussetzungen finden Sie hier: http://msdn.microsoft.com/vstudio/productinfo/sysreqs/default.aspx

Außerdem brauchen Sie eine MySQL-Quelldistribution für Windows. Es gibt zwei Möglichkeiten, eine Quelldistribution zu erhalten:

  1. Besorgen Sie sich eine von MySQL AB gepackte Quelldistribution. Diese finden Sie unter http://dev.mysql.com/downloads/.

  2. Sie können sich auch selbst eine Quelldistribution aus dem aktuellen BitKeeper-Entwicklungs-Source-Tree packen. In diesem Fall müssen Sie das Paket auf einem Unix-System erstellen und dann auf Ihr Windows-System übertragen. (Das liegt daran, dass einige Konfigurations- und Erstellungsschritte Tools erfordern, die nur unter Unix funktionieren.) Insofern benötigen Sie für die BitKeeper-Variante Folgendes:

Wenn Sie eine Windows-Quelldistribution verwenden, können Sie direkt bei Abschnitt 2.8.6.1, „Bauen von MySQL mit VC++“, fortfahren. Um die Distribution aus dem BitKeeper-Tree zu erstellen, fahren Sie fort bei Abschnitt 2.8.6.2, „Erzeugen eines Windows-Quellpakets aus dem neusten Entwicklungsbaum“.

Wenn Sie feststellen, dass etwas nicht erwartungsgemäß funktioniert, oder Vorschläge zur Verbesserung des derzeitigen Erstellungsvorgangs unter Windows haben, senden Sie bitte eine Mitteilung an die Mailingliste win32. Siehe auch Abschnitt 1.7.1, „Die MySQL-Mailinglisten“.

2.8.6.1. Bauen von MySQL mit VC++

Hinweis: VC++-Arbeitsbereichsdateien für MySQL 4.1 und höher sind kompatibel mit den Microsoft Visual Studio 2003-Editionen und wurden von MySQL AB-Mitarbeitern vor der Freigabe getestet.

Gehen Sie wie folgt vor, um MySQL zu erstellen:

  1. Erstellen Sie ein Arbeitsverzeichnis (z. B. C:\workdir).

  2. Entpacken Sie die Quelldistribution mit WinZip oder einem anderen Windows-Tool, das .zip-Dateien lesen kann, in das gerade erstellte Verzeichnis.

  3. Starten Sie Visual Studio.

  4. Wählen Sie im Menü Datei den Eintrag Arbeitsbereich öffnen.

  5. Öffnen Sie den Arbeitsbereich mysql.dsw, den Sie im Arbeitsverzeichnis finden.

  6. Wählen Sie im Menü Erstellen den Eintrag Aktive Konfiguration festlegen.

  7. Klicken Sie auf der anderen Seite des Bildschirms auf mysqld - Win32 Debug und dann auf die Schaltfläche OK.

  8. Betätigen Sie F7, um die Erstellung des Debugservers, der Bibliotheken und einiger Clientanwendungen zu starten.

  9. Kompilieren Sie die Release-Version auf gleiche Weise.

  10. Debugversionen der Programme und Bibliotheken befinden sich in den Verzeichnissen client_debug und lib_debug. Release-Versionen der Programme und Bibliotheken befinden sich in den Verzeichnissen client_release und lib_release. Beachten Sie, dass Sie, wenn Sie sowohl Debug- als auch Release-Versionen erstellen wollen, die Option Alles erstellen im Menü Erstellen auswählen können.

  11. Testen Sie den Server. Der Server, den Sie gerade erstellt haben, erwartet die Standardwerte für das MySQL-Basisverzeichnis und das Datenverzeichnis (C:\mysql bzw. C:\mysql\data). Wenn Sie Ihren Server unter Verwendung des Source-Tree-Stammverzeichnisses und -Datenverzeichnisses als Stamm- bzw. Datenverzeichnis testen wollen, müssen Sie dem Server die entsprechenden Pfadnamen mitteilen. Sie können dies entweder über die Befehlszeile mit den Optionen --basedir und --datadir tun, oder indem Sie die entsprechenden Optionen in einer Optionsdatei ablegen. (Siehe auch Abschnitt 4.3.2, „my.cnf-Optionsdateien“.) Wenn Sie ein anderes, bereits an anderer Stelle vorhandenes Datenverzeichnis verwenden sollen, können Sie stattdessen auch diesen Pfadnamen angeben.

  12. Starten Sie Ihren Server aus dem Verzeichnis client_release oder client_debug (dies hängt vom zu verwendenden Server ab). Die allgemeinen Anweisungen zum Starten des Servers finden Sie in Abschnitt 2.3, „Installation von MySQL unter Windows“. Sie müssen die Anweisung entsprechend anpassen, wenn Sie ein anderes Basis- oder Datenverzeichnis verwenden wollen.

  13. Wenn der Server je nach Ihrer Konfiguration als Anwendung oder Dienst ausgeführt wird, versuchen Sie, mit ihm über das interaktive Befehlszeilen-Hilfsprogramm mysql eine Verbindung herzustellen. Sie finden es in Ihrem Verzeichnis client_release oder client_debug.

Wenn Sie zu der Ansicht gekommen sind, dass die von Ihnen erstellten Programme korrekt laufen, beenden Sie den Server. Installieren Sie nun wie folgt MySQL:

  1. Erstellen Sie die Verzeichnisse, in die Sie MySQL installieren wollen. Um etwa MySQL im Verzeichnis C:\mysql zu installieren, verwenden Sie die folgenden Befehle:

    C:\> mkdir C:\mysql
    C:\> mkdir C:\mysql\bin
    C:\> mkdir C:\mysql\data
    C:\> mkdir C:\mysql\share
    C:\> mkdir C:\mysql\scripts
    

    Wenn Sie andere Clients kompilieren und diese mit MySQL verknüpfen wollen, sollten Sie mehrere zusätzliche Verzeichnisse erstellen:

    C:\> mkdir C:\mysql\include
    C:\> mkdir C:\mysql\lib
    C:\> mkdir C:\mysql\lib\debug
    C:\> mkdir C:\mysql\lib\opt
    

    Wenn Sie Benchmarks für MySQL erstellen wollen, legen Sie das folgende Verzeichnis an:

    C:\> mkdir C:\mysql\sql-bench
    

    Für Benchmark-Tests benötigen Sie die Perl-Unterstützung. Siehe auch Abschnitt 2.13, „Anmerkungen zur Perl-Installation“.

  2. Kopieren Sie die folgenden Verzeichnisse aus dem Verzeichnis workdir in das Verzeichnis C:\mysql:

    C:\> cd \workdir
    C:\workdir> copy client_release\*.exe C:\mysql\bin
    C:\workdir> copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
    C:\workdir> xcopy scripts\*.* C:\mysql\scripts /E
    C:\workdir> xcopy share\*.* C:\mysql\share /E
    

    Wenn Sie andere Clients kompilieren und diese mit MySQL verknüpfen wollen, sollten Sie außerdem verschiedene Bibliotheken und Header-Dateien erstellen:

    C:\workdir> copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
    C:\workdir> copy lib_debug\libmysql.* C:\mysql\lib\debug
    C:\workdir> copy lib_debug\zlib.* C:\mysql\lib\debug
    C:\workdir> copy lib_release\mysqlclient.lib C:\mysql\lib\opt
    C:\workdir> copy lib_release\libmysql.* C:\mysql\lib\opt
    C:\workdir> copy lib_release\zlib.* C:\mysql\lib\opt
    C:\workdir> copy include\*.h C:\mysql\include
    C:\workdir> copy libmysql\libmysql.def C:\mysql\include
    

    Wenn Sie Benchmarks für MySQL erstellen wollen, sollten Sie auch Folgendes tun:

    C:\workdir> xcopy sql-bench\*.* C:\mysql\bench /E
    

Konfigurieren und starten Sie den Server auf die gleiche Weise wie bei einer Windows-Distribution. Siehe auch Abschnitt 2.3, „Installation von MySQL unter Windows“.

2.8.6.2. Erzeugen eines Windows-Quellpakets aus dem neusten Entwicklungsbaum

Um ein Windows-Quellcodepaket aus dem BitKeeper-Source-Tree zu erstellen, verwenden Sie die nachfolgenden Anweisungen. Dieser Vorgang muss auf einem System unter Unix oder einem Unix-Derivat durchgeführt werden, da einige der Konfigurations- und Erstellungsschritte das Vorhandensein von Tools voraussetzen, die nur unter Unix laufen. Die folgende Vorgehensweise funktioniert etwa unter Linux einwandfrei.

  1. Kopieren Sie den BitKeeper-Source-Tree für MySQL 5.1. Hinweise hierzu finden Sie in Abschnitt 2.8.3, „Installation vom Entwicklungs-Source-Tree“.

  2. Konfigurieren und erstellen Sie die Distribution, um eine Serverbinärdatei zu erhalten, mit der Sie arbeiten können. Eine Möglichkeit hierzu besteht im Ausführen des folgenden Befehls im obersten Verzeichnis Ihres Source-Trees:

    shell> ./BUILD/compile-pentium-max
    
  3. Wenn Sie sich davon überzeugt haben, dass der Erstellungsprozess erfolgreich abgeschlossen wurde, führen Sie das folgende Hilfsskript im obersten Verzeichnis Ihres Source-Trees aus:

    shell> ./scripts/make_win_src_distribution
    

    Das Skript erstellt ein Windows-Quellpaket zur Verwendung auf Ihrem Windows-System. Sie können je nach Bedarf unterschiedliche Optionen für das Skript angeben. Die folgenden Optionen werden akzeptiert:

    • --help

      Zeigt eine Hilfemeldung an.

    • --debug

      Druckt Informationen zu Skriptoperationen (das Paket wird nicht erstellt).

    • --tmp

      Gibt das Temporärverzeichnis an.

    • --suffix

      Suffixname des Pakets.

    • --dirname

      Name des Verzeichnisses, in das die Dateien temporär kopiert werden.

    • --silent

      Die Liste der verarbeiteten Dateien wird nicht ausgegeben.

    • --tar

      Erstellt ein tar.gz- statt eines .zip-Pakets.

    Standardmäßig legt make_win_src_distribution ein Archiv im ZIP-Format mit dem Namen mysql-VERSION-win-src.zip an. Hierbei steht VERSION für die Version Ihres MySQL-Source-Trees.

  4. Kopieren Sie das soeben erstellte Windows-Quellpaket auf Ihren Windows-Computer bzw. laden Sie es hoch. Verwenden Sie zur Kompilierung die Anweisungen in Abschnitt 2.8.6.1, „Bauen von MySQL mit VC++“.

2.8.7. MySQL-Clients auf Windows kompilieren

In Ihren Quelldateien sollten Sie my_global.h vor mysql.h einsetzen:

#include <my_global.h>
#include <mysql.h>

my_global.h enthält alle Dateien, die für die Windows-Kompatibilität erforderlich sind (z. B. windows.h), wenn Sie Ihr Programm unter Windows kompilieren.

Sie können Ihren Code entweder mit der dynamischen Bibliothek libmysql.lib, die nichts anderes als ein Wrapper zum Einladen bei Bedarf in libmysql.dll ist, oder mit der statischen Bibliothek mysqlclient.lib verknüpfen.

Die MySQL-Clientbibliotheken werden als Bibliotheken mit Threads kompiliert, d. h., Sie sollten Ihren Code mit Multithread-Unterstützung kompilieren.

2.9. Einstellungen und Tests nach der Installation

Nach der Installation von MySQL gibt es einige Aspekte, die beachtet werden sollten. So sollten Sie etwa unter Unix das Datenverzeichnis initialisieren und die MySQL-Grant-Tabellen erstellen. Bei allen Plattformen besteht ein erhebliches Sicherheitsrisiko darin, dass die bei der Installation in den Grant-Tabellen eingerichteten Konten keine Passwörter aufweisen. Sie sollten Passwörter zuweisen, um unautorisierten Zugriff auf den MySQL Server zu verhindern. Optional können Sie Zeitzonentabellen erstellen, um die Erkennung benannter Zeitzonen zu ermöglichen.

Die folgenden Abschnitte erhalten Angaben zu Maßnahmen nach Abschluss der Installation, die speziell auf Windows- bzw. Unix-Systeme zugeschnitten sind. In Abschnitt 2.9.2.3, „Probleme mit dem Start des MySQL Servers“, finden Sie zudem Informationen, die für alle Plattformen gelten. Dort wird beschrieben, was Sie tun können, wenn Sie Probleme mit dem Starten des Servers haben. Auch Abschnitt 2.9.3, „Einrichtung der anfänglichen MySQL-Berechtigungen“, betrifft alle Plattformen. Sie sollten den Anweisungen folgen, um zu gewährleisten, dass Ihre MySQL-Konten durch Konfiguration von Passwörtern angemessen geschützt sind.

Wenn Sie so weit sind, dass Sie weitere Benutzerkonten erstellen wollen oder müssen, finden Sie Informationen zum MySQL-Zugriffssteuerungssystem und zur Kontenverwaltung in Abschnitt 5.8, „Allgemeine Sicherheitsaspekte und das MySQL-Zugriffsberechtigungssystem“, und Abschnitt 5.9, „MySQL-Benutzerkontenverwaltung“.

2.9.1. Nach der Installation unter Windows durchzuführende Schritte

Unter Windows müssen Datenverzeichnis und Grant-Tabellen nicht erstellt werden. Windows-Distributionen von MySQL enthalten bereits Grant-Tabellen mit vorinitialisierten Konten in der mysql-Datenbank im Datenverzeichnis. Insofern ist es nicht notwendig, das Skript mysql_install_db auszuführen, das unter Unix obligatorisch ist. Was Passwörter betrifft, so haben Sie diese unter Umständen bereits für die Konten vergeben, sofern Sie MySQL mit dem Windows-Installations-Assistenten installiert haben. (Siehe auch Abschnitt 2.3.4, „Verwendung des MySQL-Installations-Assistenten“.) Andernfalls müssen Sie die in Abschnitt 2.9.3, „Einrichtung der anfänglichen MySQL-Berechtigungen“, beschriebene Vorgehensweise zur Vergabe von Passwörtern befolgen.

Bevor Sie Passwörter konfigurieren, sollten Sie einige Clientprogramme ausführen, um sicherzustellen, dass sich Serververbindungen herstellen lassen und einwandfrei arbeiten. Vergewissern Sie sich, dass der Server läuft (siehe Abschnitt 2.3.10, „Erstmaliges Starten des Servers“), und geben Sie dann die folgenden Befehle ein, um nachzuprüfen, ob Sie Daten vom Server abrufen können. Die Ausgabe sollte ähnlich wie nachfolgend aufgeführt aussehen:

C:\> C:\mysql\bin\mysqlshow
+-----------+
| Databases |
+-----------+
| mysql     |
| test      |
+-----------+

C:\> C:\mysql\bin\mysqlshow mysql
Database: mysql
+---------------------------+
|          Tables           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

C:\> C:\mysql\bin\mysql -e "SELECT Host,Db,User FROM db" mysql
+------+-------+------+
| host | db    | user |
+------+-------+------+
| %    | test% |      |
+------+-------+------+

Wenn Sie eine Windows-Version verwenden, die Dienste unterstützt, und Sie wollen, dass der MySQL Server beim Start von Windows automatisch gestartet wird, finden Sie Informationen in Abschnitt 2.3.12, „Starten von MySQL als Windows-Dienst“.

2.9.2. Schritte nach der Installation unter Unix

Nachdem Sie MySQL unter Unix installiert haben, müssen Sie die Grant-Tabellen initialisieren, den Server starten und sicherstellen, dass dieser korrekt arbeitet. Ferner sollten Sie das automatische Starten und Beenden des Servers beim Starten bzw. Herunterfahren des Systems konfigurieren. Zudem sind Passwörter für die Konten in den Grant-Tabellen zu erstellen.

Unter Unix werden die Grant-Tabellen durch das Programm mysql_install_db eingerichtet. Bei einigen Installationsmethoden wird dieses Programm für Sie automatisch ausgeführt:

  • Wenn Sie MySQL unter Linux mithilfe von RPM-Distributionen installieren, startet das Server-RPM mysql_install_db.

  • Wenn Sie MySQL unter Mac OS X mithilfe einer PKG-Distribution installieren, startet das Installationsprogramm mysql_install_db.

In allen anderen Fällen müssen Sie mysql_install_db selbst ausführen.

Die nachfolgende Vorgehensweise beschreibt, wie man die Grant-Tabellen initialisiert (soweit dies noch nicht geschehen ist) und dann den Server startet. Ferner werden einige Befehle vorgeschlagen, mit denen Sie testen können, ob der Server zugänglich ist und korrekt arbeitet. Informationen zum automatischen Starten und Beenden des Servers finden Sie in Abschnitt 2.9.2.2, „MySQL automatisch starten und anhalten“.

Wenn Sie den Vorgang abgeschlossen haben und der Server läuft, sollten Sie für die von mysql_install_db erstellten Konten Passwörter erstellen. Eine Anleitung hierzu finden Sie in Abschnitt 2.9.3, „Einrichtung der anfänglichen MySQL-Berechtigungen“.

In den nachfolgenden Beispielen läuft der Server unter der Benutzer-ID des Anmeldekontos mysql. Dies setzt natürlich voraus, dass dieses Konto auch existiert. Ist dies nicht der Fall, dann müssen Sie das Konto entweder erstellen oder den Namen eines anderen vorhandenen Anmeldekontos ersetzen, das Sie für die Ausführung des Servers verwenden wollen.

  1. Wechseln Sie in das oberste Verzeichnis Ihrer MySQL-Installation (dieses wird hier als BASEDIR dargestellt):

    shell> cd BASEDIR
    

    BASEDIR ist dabei so etwas wie /usr/local/mysql oder /usr/local. Die folgenden Schritte setzen voraus, dass Sie in dieses Verzeichnis gewechselt sind.

  2. Sofern notwendig, führen Sie mysql_install_db aus, um die vorgabeseitigen MySQL-Grant-Tabellen mit den Berechtigungen einzurichten, die bestimmen, wie Benutzer mit dem Server Verbindungen herstellen können. Sie müssen das tun, wenn Sie einen Distributionstyp verwendet haben, bei dessen Installation das Programm nicht automatisch ausgeführt wird.

    Normalerweise muss mysql_install_db nur bei der Erstinstallation von MySQL ausgeführt werden; Sie können diesen Schritt also überspringen, wenn Sie eine vorhandene Installation aktualisieren. Allerdings überschreibt mysql_install_db keine vorhandenen Berechtigungstabellen, kann also in allen Situationen problemlos ausgeführt werden.

    Um die Grant-Tabellen zu initialisieren, verwenden Sie einen der folgenden Befehle (je nachdem, ob sich mysql_install_db im Verzeichnis bin oder scripts befindet):

    shell> bin/mysql_install_db --user=mysql
    shell> scripts/mysql_install_db --user=mysql
    

    Das Skript mysql_install_db erstellt das Datenverzeichnis des Servers. In diesem Datenverzeichnis werden Verzeichnisse für die mysql-Datenbank, die alle Datenbankberechtigungen enthält, und die test-Datenbank erstellt, die Sie zum Testen von MySQL verwenden können. Das Skript erstellt außerdem Einträge für root-Konten und Konten für anonyme Benutzer in den Berechtigungstabellen. Diese Konten haben anfangs kein Passwort. Eine Beschreibung ihrer Ausgangsberechtigungen finden Sie in Abschnitt 2.9.3, „Einrichtung der anfänglichen MySQL-Berechtigungen“. Kurz gesagt, ermöglichen diese Berechtigungen dem MySQL-root-Benutzer alles und erlauben jedem Benutzer zudem die Erstellung und Verwendung von Datenbanken mit dem Namen test oder einem Namen, der mit test_ beginnt.

    Es ist wichtig sicherzustellen, dass die Datenbankverzeichnisse und -dateien im Besitz des Kontos mysql sind, damit der Server bei der späteren Ausführung Lese- und Schreibzugriff darauf hat. Um dies zu gewährleisten, sollte die Option --user wie nachfolgend gezeigt verwendet werden, wenn Sie mysql_install_db als root ausführen. Andernfalls sollten Sie das Skript ausführen, während Sie als mysql angemeldet sind; in diesem Fall können Sie die Option --user in dem Befehl weglassen.

    mysql_install_db erstellt eine Reihe von Tabellen in der mysql-Datenbank, darunter u. a. user, db, host, tables_priv, columns_priv und func. Eine vollständige Auflistung und Beschreibung dieser Tabellen finden Sie in Abschnitt 5.8, „Allgemeine Sicherheitsaspekte und das MySQL-Zugriffsberechtigungssystem“.

    Wenn Sie die test-Datenbank nicht brauchen, können Sie sie nach dem Starten des Servers mit dem Befehl mysqladmin -u root drop test entfernen.

    Sollten Sie an dieser Stelle Probleme mit mysql_install_db haben, dann finden Sie weitere Informationen in Abschnitt 2.9.2.1, „Probleme mit mysql_install_db.

  3. Starten Sie den MySQL Server:

    shell> bin/mysqld_safe --user=mysql &
    

    Es ist wichtig, dass der MySQL Server über ein berechtigungsloses Anmeldekonto (d. h. kein root-Konto) ausgeführt wird. Um dies zu gewährleisten, sollte die Option --user wie nachfolgend gezeigt verwendet werden, wenn Sie mysql_safe als root ausführen. Andernfalls sollten Sie das Skript ausführen, während Sie als mysql am System angemeldet sind; in diesem Fall können Sie die Option --user in dem Befehl weglassen.

    Weitere Anweisungen zur Ausführung von MySQL als berechtigungsloser Benutzer finden Sie in Abschnitt 5.7.5, „Wie man MySQL als normaler Benutzer laufen läßt“.

    Wenn Sie vor Durchführung dieses Schritts vergessen haben, die Grant-Tabellen zu erstellen, dann erscheint die folgende Meldung im Fehlerlog, wenn Sie den Server starten:

    mysqld: Can't find file: 'host.frm'
    

    Bei Auftreten anderer Probleme während des Serverstarts finden Sie Informationen in Abschnitt 2.9.2.3, „Probleme mit dem Start des MySQL Servers“.

  4. Stellen Sie mit mysqladmin sicher, dass der Server ausgeführt wird. Die folgenden Befehle ermöglichen einfache Tests, um zu prüfen, ob der Server aktiv ist und auf Verbindungen reagiert:

    shell> bin/mysqladmin version
    shell> bin/mysqladmin variables
    

    Die Ausgabe von mysqladmin version kann je nach Plattform und MySQL-Version variieren, sollte aber der nachfolgend abgebildeten ähneln:

    shell> bin/mysqladmin version
    mysqladmin  Ver 14.12 Distrib 5.1.5-alpha, for pc-linux-gnu on i686
    Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license
    
    Server version          5.1.5-alpha-Max
    Protocol version        10
    Connection              Localhost via UNIX socket
    UNIX socket             /var/lib/mysql/mysql.sock
    Uptime:                 14 days 5 hours 5 min 21 sec
    
    Threads: 1  Questions: 366  Slow queries: 0  
    Opens: 0  Flush tables: 1  Open tables: 19  
    Queries per second avg: 0.000
    

    Wenn Sie wissen wollen, was Sie mit mysqladmin noch machen können, rufen Sie es mit der Option --help auf.

  5. Überprüfen Sie nun, ob Sie den Server herunterfahren können:

    shell> bin/mysqladmin -u root shutdown
    
  6. Als Nächstes prüfen Sie, ob Sie den Server neu starten können. Hierzu verwenden Sie mysqld_safe oder rufen mysqld direkt auf. Ein Beispiel:

    shell> bin/mysqld_safe --user=mysql --log &
    

    Schlägt mysqld_safe fehl, dann lesen Sie Abschnitt 2.9.2.3, „Probleme mit dem Start des MySQL Servers“.

  7. Führen Sie einige einfache Tests durch, um sicherzustellen, dass Sie Daten am Server abrufen können. Die Ausgabe sollte ähnlich wie nachfolgend aufgeführt aussehen:

    shell> bin/mysqlshow
    +-----------+
    | Databases |
    +-----------+
    | mysql     |
    | test      |
    +-----------+
    
    shell> bin/mysqlshow mysql
    Database: mysql
    +---------------------------+
    |          Tables           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | func                      |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | host                      |
    | proc                      |
    | procs_priv                |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+
    
    shell> bin/mysql -e "SELECT Host,Db,User FROM db" mysql
    +------+--------+------+
    | host | db     | user |
    +------+--------+------+
    | %    | test   |      |
    | %    | test_% |      |
    +------+--------+------+
    
  8. Im Verzeichnis sql-bench (dieses befindet sich im MySQL-Installationsverzeichnis) befindet sich eine Benchmark-Reihe, die Sie verwenden können, um die Leistungsfähigkeit von MySQL auf verschiedenen Plattformen zu vergleichen. Diese Benchmark-Reihe ist in Perl geschrieben. Sie erfordert das Perl-DBI-Modul, welches eine datenbankunabhängige Schnittstelle zu verschiedenen Datenbanken bereitstellt, sowie einige weitere Perl-Module:

    DBI
    DBD::mysql
    Data::Dumper
    Data::ShowTable
    

    Diese Module erhalten Sie bei CPAN (http://www.cpan.org/). Siehe auch Abschnitt 2.13.1, „Installation von Perl unter Unix“.

    Das Verzeichnis sql-bench/Results enthält die Ergebnisse vieler Testläufe mit unterschiedlichen Datenbanken und Plattformen. Um alle Tests durchzuführen, setzen Sie die folgenden Befehle ab:

    shell> cd sql-bench
    shell> perl run-all-tests
    

    Wenn das Verzeichnis sql-bench bei Ihnen nicht vorhanden ist, haben Sie MySQL wahrscheinlich aus anderen RPM-Dateien als dem Quell-RPM installiert. (Das Quell-RPM enthält das Benchmark-Verzeichnis sql-bench.) In diesem Fall müssen Sie die Benchmark-Reihe zunächst installieren, bevor Sie sie verwenden können. Es gibt separate Benchmark-RPMs namens mysql-bench-VERSION-i386.rpm, die den Benchmark-Code und die Daten enthalten.

    Wenn Sie mit einer Quelldistribution arbeiten, finden Sie in deren Unterverzeichnis tests weitere Tests, die Sie ausführen können. Um etwa auto_increment.tst auszuführen, setzen Sie den folgenden Befehl im obersten Verzeichnis Ihrer Quelldistribution ab:

    shell> mysql -vvf test < ./tests/auto_increment.tst
    

    Die erwarteten Testergebnisse finden Sie in der Datei ./tests/auto_increment.res.

  9. An dieser Stelle sollte der Server bereits laufen. Allerdings verfügt keines der vorgabeseitigen MySQL-Konten über ein Passwort. Weisen Sie deswegen Passwörter zu wie in Abschnitt 2.9.3, „Einrichtung der anfänglichen MySQL-Berechtigungen“, beschrieben.

Der Installationsvorgang für MySQL 5.1 erstellt Zeitzonentabellen in der Datenbank mysql. Sie müssen die Tabellen allerdings manuell ausfüllen; wie das geht, steht in Abschnitt 5.11.8, „Zeitzonen-Unterstützung des MySQL-Servers“.

2.9.2.1. Probleme mit mysql_install_db

Der Zweck des Skripts mysql_install_db besteht in der Generierung neuer MySQL-Berechtigungstabellen. Hierbei werden vorhandene MySQL-Berechtigungstabellen nicht überschrieben, und auch andere Daten werden nicht beeinträchtigt.

Wollen Sie Ihre Berechtigungstabellen neu erstellen, dann beenden Sie zunächst den mysqld-Server, sofern dieser läuft. Benennen Sie das Verzeichnis mysql im Datenverzeichnis dann um, um es zu speichern, und führen Sie nachfolgend mysql_install_db aus. Nehmen wir an, Ihr aktuelles Verzeichnis ist das MySQL-Installationsverzeichnis, mysql_install_db befindet sich im Verzeichnis bin und das Datenverzeichnis heißt data. Um die mysql-Datenbank umzubenennen und mysql_install_db erneut auszuführen, verwenden Sie die folgenden Befehle:

shell> mv data/mysql data/mysql.old
shell> bin/mysql_install_db --user=mysql

Wenn Sie mysql_install_db ausführen, können die folgenden Probleme auftreten:

  • mysql_install_db kann die Grant-Tabellen nicht installieren.

    Unter Umständen stellen Sie fest, dass mysql_install_db die Grant-Tabellen nicht installieren kann und nach Anzeige der folgenden Meldungen beendet wird:

    Starting mysqld daemon with databases from XXXXXX
    mysqld ended
    

    In diesem Fall sollten Sie die Fehlerlogdatei sehr aufmerksam lesen. Das Fehlerlog sollte sich im Verzeichnis XXXXXX befinden (dieses ist nach der Fehlermeldung benannt) und angeben, warum mysqld nicht gestartet wurde. Wenn Sie nicht verstehen, was geschehen ist, hängen Sie das Log an, wenn Sie einen Bugreport einsenden. Siehe auch Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“.

  • Ein mysqld-Prozess wird ausgeführt.

    Dies weist darauf hin, dass der Server läuft und die Grant-Tabellen wahrscheinlich bereits erstellt wurden. In diesem Fall müssen Sie mysql_install_db überhaupt nicht ausführen, da es nur einmal gestartet werden muss (nämlich dann, wenn Sie MySQL zum ersten Mal installieren).

  • Die Installation eines zweiten mysqld-Servers schlägt fehl, wenn ein Server bereits läuft.

    Dies kann passieren, wenn eine MySQL-Installation bereits vorhanden ist, Sie aber eine neue Installation an einer anderen Position ablegen wollen. So haben Sie vielleicht eine Produktionsinstallation, wollen aber eine zweite Installation zu Testzwecken einrichten. Meist tritt dieses Problem auf, wenn Sie einen zweiten Server ausführen wollen, der auf eine Netzwerkschnittstelle zuzugreifen versucht, die bereits vom ersten Server verwendet wird. In diesem Fall werden Sie eine der folgenden Fehlermeldungen sehen:

    Can't start server: Bind on TCP/IP port:
    Address already in use
    Can't start server: Bind on unix socket ...
    

    Anweisungen zur Einrichtung mehrerer Server finden Sie in Abschnitt 5.13, „Mehrere MySQL-Server auf derselben Maschine laufen lassen“.

  • Sie haben keinen Schreibzugriff auf das Verzeichnis /tmp.

    Wenn Sie keinen Schreibzugriff erhalten, um Temporärdateien oder eine Unix-Socketdatei im Standardverzeichnis (/tmp) zu erstellen, dann tritt ein Fehler auf, wenn Sie mysql_install_db oder den mysqld-Server ausführen wollen.

    Sie können verschiedene Positionen für das Temporärverzeichnis und die Unix-Socketdatei angeben, indem Sie die folgenden Befehle vor dem Starten von mysql_install_db oder mysqld ausführen (hierbei ist some_tmp_dir der vollständige Pfadname eines Verzeichnisses, für das Sie Schreibzugriff haben):

    shell> TMPDIR=/some_tmp_dir/
    shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysql.sock
    shell> export TMPDIR MYSQL_UNIX_PORT
    

    Danach sollten Sie in der Lage sein, mysql_install_db mit den folgenden Befehlen auszuführen und den Server zu starten:

    shell> bin/mysql_install_db --user=mysql
    shell> bin/mysqld_safe --user=mysql &
    

    Wenn sich mysql_install_db im Verzeichnis scripts befindet, ändern Sie den ersten Befehl zu scripts/mysql_install_db.

    Siehe auch Abschnitt A.4.5, „Wie Sie die MySQL-Socketdatei /tmp/mysql.sock schützen oder ändern“, und Anhang F, Umgebungsvariablen.

Es gibt einige Alternativen zur Ausführung des Skripts mysql_install_db, welches Bestandteil der MySQL-Distribution ist:

  • Wenn Sie wollen, dass die Ausgangsberechtigungen sich von den Standardwerten unterscheiden, können Sie mysql_install_db vor der Ausführung bearbeiten. Allerdings bietet es sich eher an, mit GRANT und REVOKE die Berechtigungen zu ändern, nachdem die Grant-Tabellen eingerichtet wurden. Mit anderen Worten, Sie können mysql_install_db ausführen und dann mithilfe von mysql -u root mysql eine Verbindung zum Server als MySQL-root-Benutzer herstellen, damit Sie die erforderlichen GRANT- und REVOKE-Anweisungen absetzen können.

    Wenn Sie MySQL auf mehreren Computern mit denselben Berechtigungen installieren wollen, können Sie die GRANT- und REVOKE-Anweisungen auch in einer Datei ablegen und diese Datei mithilfe von mysql als Skript ausführen, nachdem Sie mysql_install_db gestartet haben. Ein Beispiel:

    shell> bin/mysql_install_db --user=mysql
    shell> bin/mysql -u root < your_script_file
    

    Auf diese Weise müssen Sie die Anweisungen nicht manuell auf jedem einzelnen Computer eingeben.

  • Es ist möglich, die Grant-Tabellen nach ihrer Erstellung vollständig neu zu erstellen. Dies müssen Sie unter Umständen tun, wenn Sie gerade erst lernen, wie man GRANT und REVOKE verwendet, und nach der Ausführung von mysql_install_db derart viele Änderungen vorgenommen haben, dass Sie die Tabellen komplett löschen und von vorn beginnen wollen.

    Um die Grant-Tabellen neu zu erstellen, entfernen Sie alle .frm-, .MYI- und .MYD-Dateien im Datenbankverzeichnis mysql. Danach führen Sie das Skript mysql_install_db erneut aus.

  • Sie können mysqld manuell mithilfe der Option --skip-grant-tables starten und die Berechtigungsdaten selbst unter Verwendung von mysql hinzufügen:

    shell> bin/mysqld_safe --user=mysql --skip-grant-tables &
    shell> bin/mysql mysql
    

    Von mysql führen Sie die in mysql_install_db enthaltenen SQL-Befehle manuell aus. In jedem Fall müssen Sie danach mysqladmin flush-privileges oder mysqladmin reload ausführen, um dem Server mitzuteilen, dass er die Grant-Tabellen neu laden muss.

    Beachten Sie, dass Sie, wenn Sie mysql_install_db nicht benutzen, die Grant-Tabellen nicht nur manuell ausfüllen, sondern sie zuvor auch noch erstellen müssen.

2.9.2.2. MySQL automatisch starten und anhalten

Normalerweise starten Sie den mysqld-Server unter Verwendung einer der folgenden Möglichkeiten:

  • Durch direkten Aufruf von mysqld. Das funktioniert auf allen Plattformen.

  • Durch Ausführung des MySQL Servers als Windows-Dienst. Dies ist unter Windows-Versionen möglich, die Dienste unterstützen (also NT, 2000, XP und 2003). Der Dienst kann entweder so konfiguriert werden, dass der Server automatisch mit Windows startet, oder als manueller Dienst, den Sie manuell starten müssen. Informationen zur Vorgehensweise finden Sie in Abschnitt 2.3.12, „Starten von MySQL als Windows-Dienst“.

  • Durch Aufruf von mysqld_safe. Hierbei wird versucht, die passenden Optionen für mysqld zu ermitteln und es dann mit diesen Optionen zu starten. Dieses Skript wird unter Unix und Unix-ähnlichen Systemen verwendet. Siehe auch Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“.

  • Durch den Aufruf von mysql.server. Dieses Skript wird in erster Linie beim Starten und Beenden von Systemen verwendet, die Ausführungsverzeichnisse im System V-Stil verwenden, wo es normalerweise unter dem Namen mysql installiert ist. Das Skript mysql.server startet den Server, indem es mysqld_safe aufruft. Siehe auch Abschnitt 5.4.2, „mysql.server — Startskript für den MySQL-Server“.

  • Unter Mac OS X können Sie ein separates MySQL-Startobjektpaket installieren, um den automatischen Start von MySQL beim Systemstart zu aktivieren. Das Startobjekt startet den Server durch Aufruf von mysql.server. Weitere Informationen finden Sie in Abschnitt 2.5, „Installation von MySQL unter Mac OS X“.

Die Skripten mysqld_safe und mysql.server und das Mac OS X-Startobjekt können für den manuellen Start des Servers oder für seinen automatischen Start beim Systemstart verwendet werden. mysql.server und das Startobjekt erlauben zudem das Beenden des Servers.

Um den Server mit mysql.server manuell zu starten oder zu beenden, rufen Sie es mit dem Argument start bzw. stop auf:

shell> mysql.server start
shell> mysql.server stop

Bevor mysql.server den Server startet, wechselt es in das MySQL-Installationsverzeichnis und ruft dann mysqld_safe auf. Wenn Sie wollen, dass der Server als ein bestimmter Benutzer ausgeführt wird, fügen Sie die entsprechende Option user im Abschnitt [mysqld] der Optionsdatei /etc/my.cnf hinzu. Eine Erklärung erhalten Sie im weiteren Verlauf dieses Abschnitts. (Unter Umständen müssen Sie mysql.server bearbeiten, wenn Sie eine Binärdistribution von MySQL in einem anderen als dem Standardverzeichnis installiert haben. Ändern Sie es so, dass es via cd in das korrekte Verzeichnis wechselt, bevor es mysqld_safe ausführt. Beachten Sie allerdings, dass Ihre geänderte Version von mysql.server bei einem zukünftigen MySQL-Upgrade überschrieben werden könnte; deswegen sollten Sie eine Kopie der editierten Version erstellen, die Sie bei Bedarf neu installieren können.)

mysql.server stop beendet den Server, indem es ein Signal an ihn schickt. Sie können den Server auch manuell beenden, indem Sie mysqladmin shutdown ausführen.

Um MySQL automatisch auf Ihrem Server zu starten und zu beenden, müssen Sie Start- und Stoppbefehle an den entsprechenden Stellen Ihrer /etc/rc*-Dateien einfügen.

Wenn Sie das Linux-Server-RPM-Paket (MySQL-server-VERSION.rpm) verwenden, wird das Skript mysql.server im Verzeichnis /etc/init.d unter dem Namen mysql installiert. Sie müssen die Installation also nicht manuell vornehmen. Weitere Informationen zu Linux-RPM-Paketen finden Sie in Abschnitt 2.4, „MySQL unter Linux installieren“.

Manche Anbieter stellen RPM-Pakete bereit, die ein Startskript unter einem anderen Namen wie etwa mysqld installieren.

Wenn Sie MySQL aus einer Quelldistribution installieren oder ein Binärdistributionsformat verwenden, das mysql.server nicht automatisch installiert, können Sie es manuell installieren. Sie finden das Skript im Verzeichnis support-files, das sich im MySQL-Installationsverzeichnis befindet, oder in einem MySQL-Source-Tree.

Um mysql.server manuell zu installieren, kopieren Sie es unter dem Namen mysql in das Verzeichnis /etc/init.d und machen es dann ausführbar. Dies tun Sie, indem Sie in das entsprechende Verzeichnis wechseln, in dem sich mysql.server befindet, und dann die folgenden Befehle ausführen:

shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql

Ältere Red Hat-Systeme verwenden das Verzeichnis /etc/rc.d/init.d statt /etc/init.d. In diesem Fall müssen Sie die obigen Befehle entsprechend ändern. Alternativ erstellen Sie zunächst /etc/init.d als symbolische Verknüpfung, die auf /etc/rc.d/init.d verweist:

shell> cd /etc
shell> ln -s rc.d/init.d .

Nach der Installation des Skripts hängt der Befehl, der zur Aktivierung der Ausführung beim Systemstart erforderlich ist, von Ihrem Betriebssystem ab. Unter Linux können Sie chkconfig verwenden:

shell> chkconfig --add mysql

Unter manchen Linux-Systemen scheint auch der folgende Befehl notwendig zu sein, um das Skript mysql vollständig zu aktivieren:

shell> chkconfig --level 345 mysql on

Unter FreeBSD sollten Startskripten generell in /usr/local/etc/rc.d/ abgelegt werden. Die Manpage rc(8) gibt an, dass Skripten in diesem Verzeichnis nur dann ausgeführt werden, wenn ihr Basisname dem Shell-Muster für Dateinamen *.sh entspricht. Alle anderen Dateien oder Verzeichnisse, die in diesem Verzeichnis vorhanden sind, werden stillschweigend ignoriert. Mit anderen Worten: Unter FreeBSD müssen Sie das Skript mysql.server als /usr/local/etc/rc.d/mysql.server.sh installieren, um den automatischen Start zu aktivieren.

Als Alternative zur obigen Konfiguration verwenden manche Betriebssysteme auch /etc/rc.local oder /etc/init.d/boot.local, um zusätzliche Dienste beim Systemstart zu starten. Um MySQL auf diese Weise zu starten, könnten Sie einen Befehl wie den folgenden an die entsprechende Startdatei anhängen:

/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'

Bei anderen Systemen lesen Sie in der Dokumentation zu Ihrem Betriebssystem nach, um zu erfahren, wie Startskripten installiert werden.

Sie können Optionen für mysql.server in einer globalen Datei /etc/my.cnf ablegen. Eine /etc/my.cnf-Datei sieht normalerweise so aus:

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql

Das Skript mysql.server versteht die folgenden Optionen: basedir, datadir und pid-file. Sofern angegeben, müssen diese in einer Optionsdatei und nicht an der Befehlszeile abgelegt sein. mysql.server versteht nur start und stop als Befehlszeilenargumente.

Die folgende Tabelle zeigt, welche Optionsgruppen der Server und die jeweiligen Startskripten aus den Optionsdateien auslesen:

SkriptAbschnitte in der Optionsdatei
mysqld[mysqld], [server], [mysqld-major_version]
mysqld_safe[mysqld], [server], [mysqld_safe]
mysql.server[mysqld], [mysql.server], [server]

[mysqld-major_version] bedeutet, dass Abschnitte mit Namen wie [mysqld-5.0] und [mysqld-5.1] von Servern der Versionen 5.0.x, 5.1.x usw. ausgelesen werden. Diese Funktion kann verwendet werden, um Optionen anzugeben, die nur von Servern einer bestimmten Release-Serie ausgelesen werden können.

Zwecks Abwärtskompatibilität liest mysql.server auch den Abschnitt [mysql_server] und mysqld_safe den Abschnitt [safe_mysqld] aus. Allerdings sollten Sie Ihre Optionsdateien so aktualisieren, dass sie stattdessen die Abschnitte [mysql.server] und [mysqld_safe] auslesen, wenn Sie MySQL 5.1 verwenden.

Siehe auch Abschnitt 4.3.2, „my.cnf-Optionsdateien“.

2.9.2.3. Probleme mit dem Start des MySQL Servers

Dieser Abschnitt enthält Vorschläge zur Fehlersuche, wenn unter Unix Probleme beim Start des Servers auftreten. Wenn Sie Windows verwenden, finden Sie Informationen in Abschnitt 2.3.14, „Troubleshooting einer MySQL-Installation unter Windows“.

Haben Sie Probleme beim Starten des Servers, dann probieren Sie folgende Schritte:

  • Suchen Sie im Fehlerlog nach Ursachen dafür, dass der Server nicht startet.

  • Geben Sie alle Sonderoptionen an, die von den von Ihnen verwendeten Speicher-Engines benötigt werden.

  • Stellen Sie sicher, dass der Server die Position des Datenverzeichnisses kennt.

  • Stellen Sie auch sicher, dass der Server auf das Datenverzeichnis zugreifen kann. Besitzrechte und Berechtigungen für das Datenverzeichnis und seine Inhalte müssen so konfiguriert sein, dass der Server sie lesen und ändern kann.

  • Überprüfen Sie, ob die Netzwerkschnittstellen, die der Server verwenden will, vorhanden sind.

Einige Speicher-Engines haben Optionen, die ihr Verhalten steuern. Sie können eine Datei my.cnf erstellen und darin die Startoptionen der Engines angeben, die Sie zu verwenden beabsichtigen. Wenn Sie Speicher-Engines verwenden wollen, die transaktionssichere Tabellen (InnoDB, BDB, NDB) unterstützen, dann vergewissern Sie sich, dass diese wie gewünscht konfiguriert sind, bevor Sie den Server starten:

Speicher-Engines verwenden, sofern keine Optionswerte definiert sind, die Vorgabewerte. Wir empfehlen deswegen, die verfügbaren Optionen zu prüfen und explizite Werte für diejenigen Optionen anzugeben, bei denen die Vorgabewerte nicht für Ihre Installation geeignet sind.

Wenn der mysqld-Server startet, wechselt er in das Datenverzeichnis. In diesem Verzeichnis erwartet er das Vorhandensein der Datenbanken, und hier wird er auch seine Logdateien speichern. Auch die PID-Datei (Process ID, Prozesskennung) wird im Datenverzeichnis abgelegt.

Das Datenverzeichnis wird bei der Kompilierung des Servers fest zugeordnet. Standardmäßig sucht der Server deswegen an der angegebenen Position nach diesem Verzeichnis. Befindet sich das Datenverzeichnis in Ihrem System an anderer Stelle, dann funktioniert der Server nicht einwandfrei. Durch Aufruf des Befehls mysqld mit den Optionen --verbose und --help können Sie die Vorgaben für die Pfadeinstellungen ermitteln.

Wenn die Standardpositionen dem MySQL-Installationslayout auf Ihrem System nicht entsprechen, können Sie sie durch Angabe von Optionen für mysqld oder mysqld_safe auf der Befehlszeile oder in einer Optionsdatei außer Kraft setzen.

Um die Position des Datenverzeichnisses explizit anzugeben, verwenden Sie die Option --datadir. Allerdings können Sie mysqld die Position des Basisverzeichnisses angeben, in dem MySQL installiert ist; mysqld wird dann in diesem Verzeichnis nach dem Datenverzeichnis suchen. Die Angabe erfolgt mit der Option --basedir.

Um die Auswirkungen der Optionen zur Pfadangabe zu überprüfen, rufen Sie mysqld mit diesen Optionen auf, gefolgt von den Optionen --verbose und --help. Wenn Sie beispielsweise in das Verzeichnis wechseln, in dem mysqld installiert ist, und dann den folgenden Befehl ausführen, werden die Auswirkung des Serverstarts bei einem Basisverzeichnis /usr/local angezeigt:

shell> ./mysqld --basedir=/usr/local --verbose --help

Sie können auch andere Optionen wie --datadir spezifizieren; beachten Sie aber, dass --verbose und --help jeweils als letzte Optionen aufzuführen sind.

Wenn Sie die gewünschten Pfadeinstellungen ermittelt haben, starten Sie den Server ohne --verbose und --help.

Wird mysqld gerade ausgeführt, dann können Sie die verwendeten Pfadeinstellungen durch Absetzen des folgenden Befehls ermitteln:

shell> mysqladmin variables

Oder:

shell> mysqladmin -h host_name variables

host_name ist der Name des MySQL Server-Hosts.

Erhalten Sie beim Starten von mysqld die Fehlermeldung Errcode 13 (Permission denied, Berechtigung verweigert), dann gestatten die Berechtigungen des Datenverzeichnisses oder seiner Inhalte keinen Serverzugriff. In diesem Fall ändern Sie die Berechtigungen für die betreffenden Dateien und Verzeichnisse so, dass der Server das Recht hat, sie zu verwenden. Sie können den Server auch als root starten, wovon aus sicherheitstechnischer Sicht jedoch dringend abgeraten wird.

Wechseln Sie unter Unix in das Datenverzeichnis und überprüfen Sie die Besitzrechte für das Datenverzeichnis und seinen Inhalt, um den Serverzugriff zu gewährleisten. Verwenden Sie etwa folgenden Befehl, wenn das Datenverzeichnis /usr/local/mysql/var ist:

shell> ls -la /usr/local/mysql/var

Wenn die Besitzrechte für das Datenverzeichnis oder seine Unterverzeichnisse nicht bei dem Anmeldekonto liegen, das Sie zur Ausführung des Servers verwenden, dann müssen Sie die Besitzrechte für diese Ressourcen dem Konto zuweisen. Heißt das Konto mysql, dann verwenden Sie folgende Befehle:

shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql/var

Wenn der Server nicht korrekt startet, prüfen Sie das Fehlerlog. Logdateien befinden sich im Datenverzeichnis (unter Windows normalerweise C:\Programme\MySQL\MySQL Server 5.1\data, bei Unix-Binärdistributionen in /usr/local/mysql/data und bei Unix-Quelldistributionen in /usr/local/var). Suchen Sie im Datenverzeichnis nach Dateien mit Namen des Typs host_name.err und host_name.log, wobei host_name der Name des Serverhosts ist. Überprüfen Sie nun die letzten paar Zeilen dieser Dateien. Unter Unix können Sie sie mit tail anzeigen:

shell> tail host_name.err
shell> tail host_name.log

Das Fehlerlog sollte Informationen dazu enthalten, warum der Server nicht starten konnte. Beispielsweise könnte das Log etwa Folgendes enthalten:

000729 14:50:10  bdb:  Recovery function for LSN 1 27595 failed
000729 14:50:10  bdb:  warning: ./test/t1.db: No such file or directory
000729 14:50:10  Can't init databases

Das bedeutet, dass Sie mysqld nicht mit der Option --bdb-no-recover gestartet haben; Berkeley DB hat dann, als es versuchte, Ihre Datenbanken wiederherzustellen, Ungereimtheiten in Bezug auf die eigenen Logdateien erkannt. Um fortzufahren, sollten Sie die alten Berkeley DB-Logdateien aus dem Datenbankverzeichnis an einen anderen Ort verschieben, wo Sie sie später untersuchen können. Die BDB-Logdateien werden in chronologischer Reihenfolge beginnend mit log.0000000001 benannt; die Zahl im Namen wird dabei stets erhöht.

Wenn Sie mysqld mit Unterstützung für BDB-Tabellen ausführen und beim Start von mysqld ein Speicherauszug auftritt, könnte dies auf Probleme in Verbindung mit dem BDB-Wiederherstellungslog hinweisen. In diesem Fall können Sie versuchen, mysqld mit der Option --bdb-no-recover zu starten. Wenn das klappt, sollten Sie alle BDB-Logdateien aus dem Datenverzeichnis entfernen und dann versuchen, mysqld ohne die Option --bdb-no-recover neu zu starten.

Tritt einer der folgenden Fehler auf, dann bedeutet dies, dass ein anderes Programm (vielleicht ein anderer mysqld-Server) den TCP/IP-Port bzw. die Unix-Socketdatei verwendet, die mysqld für sich beansprucht:

Can't start server: Bind on TCP/IP port: Address already in use
Can't start server: Bind on unix socket ...

Ermitteln Sie mit dem Befehl ps, ob ein anderer mysqld-Server ausgeführt wird. Ist dies der Fall, dann fahren Sie den Server herunter, bevor Sie mysqld erneut starten. (Wenn ein anderer Server ausgeführt wird und Sie tatsächlich mehrere Server gleichzeitig betreiben wollen, finden Sie Informationen zur Vorgehensweise in Abschnitt 5.13, „Mehrere MySQL-Server auf derselben Maschine laufen lassen“.)

Läuft kein anderer Server, dann führen Sie den Befehl telnet your_host_name tcp_ip_port_number aus. (Die Standardportnummer von MySQL ist 3306.) Betätigen Sie dann mehrfach die Eingabetaste. Erhalten Sie keine Fehlermeldung in der Art von telnet: Unable to connect to remote host: Connection refused, dann verwendet ein anderes Programm den TCP/IP-Port, den mysqld nutzen will. Sie müssen dann ermitteln, welches Programm dies ist, und es deaktivieren; alternativ können Sie mysqld mit der Option --port auch anweisen, an einem anderen Port zu lauschen. In diesem Fall müssen Sie auch die Portnummer für Clientprogramme angeben, die über TCP/IP eine Verbindung mit dem Server herstellen wollen.

Ein anderer Grund, warum kein Zugriff auf den Port möglich ist, könnte eine laufende Firewall sein, die Verbindungen zu diesem Port unterbindet. In diesem Fall müssen Sie die Firewall-Einstellungen so abändern, dass ein Zugriff möglich ist.

Wenn der Server startet, Sie aber keine Verbindung zu ihm herstellen können, dann sollten Sie sicherstellen, dass ein Eintrag wie der folgende in /etc/hosts vorhanden ist:

127.0.0.1       localhost

Dieses Problem tritt nur bei Systemen auf, die über keine funktionierende Thread-Bibliothek verfügen und für die MySQL zur Verwendung von MIT-pthreads konfiguriert sein muss.

Wenn Sie mysqld nicht zum Laufen bringen, können Sie versuchen, unter Verwendung der Option --debug eine Trace-Datei zu erstellen, um das Problem zu ermitteln. Siehe auch Abschnitt E.1.2, „Trace-Dateien erzeugen“.

2.9.3. Einrichtung der anfänglichen MySQL-Berechtigungen

Eine wesentliche Komponente des MySQL-Installationsprozesses ist die Einrichtung der mysql-Datenbank, die die Grant-Tabellen enthält:

  • Windows-Distributionen enthalten vorinitialisierte Grant-Tabellen, die automatisch installiert werden.

  • Unter Unix werden die Grant-Tabellen durch das Programm mysql_install_db ausgefüllt. Einige Installationsmethoden führen dieses Programm für Sie aus. Andere wiederum erfordern eine manuelle Ausführung. Detaillierte Informationen finden Sie in Abschnitt 2.9.2, „Schritte nach der Installation unter Unix“.

Die Grant-Tabellen definieren die vorgabeseitigen MySQL-Benutzerkonten und deren Zugriffsberechtigungen. Diese Konten werden wie folgt eingerichtet:

  • Es werden Konten mit dem Benutzernamen root erstellt. Dies sind Superuser-Konten, die alles dürfen. Anfänglich sind die Passwörter der root-Konten leer, d. h., jeder kann als rootohne Passwort — eine Verbindung mit dem MySQL Server herstellen und erhält alle Berechtigungen.

    • Unter Windows wird genau ein root-Konto erstellt. Dieses erlaubt nur eine Verbindung über den lokalen Host. Das Windows-Installationsprogramm erstellt optional ein Konto, welches Verbindung von beliebigen Hosts ermöglicht. Dieses Konto wird jedoch nur dann angelegt, wenn die Option Enable root access from remote machines während der Installation gewählt wurde.

    • Unter Unix sind beide root-Konten für Verbindungen vom lokalen Host vorgesehen. Verbindungen vom lokalen Host müssen unter Angabe von localhost für das eine Konto bzw. des tatsächlichen Hostnamens oder der IP-Nummer für das andere Konto hergestellt werden.

  • Es werden zwei Konten für anonyme Benutzer erstellt; bei beiden ist der Benutzername leer. Die anonymen Konten haben kein Passwort, d. h., jeder kann über sie eine Verbindung zum MySQL Server herstellen.

    • Unter Windows wird ein anonymes Konto für Verbindungen vom lokalen Host eingerichtet. Es hat ebenso wie die root-Konten alle Berechtigungen. Das andere Konto ist für Verbindungen von beliebigen Hosts vorgesehen und hat alle Berechtigungen für die test-Datenbank und für alle Datenbanken, deren Name auf test beginnt.

    • Unter Unix sind beide anonymen Konten für Verbindungen vom lokalen Host vorgesehen. Verbindungen vom lokalen Host müssen unter Angabe von localhost für das eine Konto bzw. des tatsächlichen Hostnamens oder der IP-Nummer für das andere Konto hergestellt werden. Diese Konten haben alle Berechtigungen für die Datenbank test und für alle Datenbanken, deren Name mit test_ beginnt.

Wie bereits angemerkt, hat keines der Vorgabekonten ein Passwort. Das bedeutet, dass Ihre MySQL-Installation nicht geschützt ist, bis Sie etwas Entsprechendes unternehmen:

  • Wenn Sie verhindern wollen, dass Clients sich ohne Angabe eines Passworts als anonyme Benutzer anmelden können, sollten Sie entweder für jedes anonyme Konto ein Passwort einrichten oder die Konten ganz entfernen.

  • Allen MySQL-root-Konten sollten Sie Passwörter zuweisen.

Die folgenden Angaben erläutern, wie Sie Passwörter für die vorgegebenen MySQL-Konten erstellen – erst für die anonymen Konten und dann für die root-Konten. Ersetzen Sie „ newpwd “ in den Beispielen durch das Passwort, welches Sie verwenden wollen. Die Erläuterungen behandeln auch die Frage, wie Sie die anonymen Konten entfernen können, wenn Sie anonymen Zugriff überhaupt nicht gestatten wollen.

Sie sollten die Einstellung der Passwörter auf einen späteren Zeitpunkt verschieben, damit Sie sie nicht angeben müssen, wenn Sie weitere Konfigurations- oder Testschritte durchführen. Achten Sie allerdings darauf, sie einzurichten, bevor Sie Ihre Installation für Produktionszwecke einsetzen.

Um Passwörter für anonyme Konten zu konfigurieren, stellen Sie als root eine Verbindung zum Server her und stellen das Passwort entweder mit SET PASSWORD ein oder führen eine UPDATE-Anweisung aus. In beiden Fällen müssen Sie das Passwort mit der PASSWORD()-Funktion verschlüsseln.

SET PASSWORD verwenden Sie unter Windows wie folgt:

shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');

SET PASSWORD verwenden Sie unter Unix wie folgt:

shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');

In der zweiten SET PASSWORD-Anweisung ersetzen Sie host_name durch den Namen des Serverhosts. Es handelt sich dabei um den Namen, den Sie in der Spalte Host desjenigen root-Datensatzes in der Tabelle user angegeben haben, der nicht mit localhost verknüpft wird. Wenn Sie diesen Hostnamen nicht kennen, setzen Sie die folgende Anweisung vor der Verwendung von SET PASSWORD ab:

mysql> SELECT Host, User FROM mysql.user;

Suchen Sie nach dem Datensatz, bei dem root in der Spalte User und etwas anderes als localhost in der Spalte Host steht. Verwenden Sie dann diesen Host-Wert in der zweiten SET PASSWORD-Anweisung.

Die andere Möglichkeit, Passwörter für anonyme Konten zuzuweisen, ist die Verwendung von UPDATE zur direkten Modifizierung der Tabelle user. Stellen Sie als root eine Verbindung zum Server her und setzen Sie eine UPDATE-Anweisung ab, die in der Spalte Password der betreffenden Datensätze in der Tabelle user einen Wert hinzufügt. Der Vorgang ist bei Windows und Unix identisch. Die folgende UPDATE-Anweisung weist beiden anonymen Konten gleichzeitig ein Passwort zu:

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = '';
mysql> FLUSH PRIVILEGES;

Wenn Sie die Passwörter in der Tabelle user mit UPDATE direkt aktualisieren, müssen Sie den Server mit FLUSH PRIVILEGES anweisen, die Grant-Tabellen neu einzulesen. Andernfalls werden Ihre Änderungen erst umgesetzt, wenn Sie den Server neu starten.

Wenn Sie die anonymen Konten stattdessen ganz entfernen wollen, gehen Sie wie folgt vor:

shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;

Die DELETE-Anweisung gilt für Windows und Unix gleichermaßen. Wenn Sie unter Windows nur das anonyme Konto entfernen wollen, das die gleichen Berechtigungen wie root hat, geben Sie stattdessen Folgendes ein:

shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
mysql> FLUSH PRIVILEGES;

Dieses Konto gewährt anonymen Zugriff, verfügt aber über Vollzugriff; insofern verbessern Sie die Sicherheit, wenn Sie es entfernen.

Sie können den root-Konten Passwörter auf mehreren unterschiedlichen Wegen zuweisen. Im Folgenden wollen wir drei Methoden demonstrieren:

  • Verwenden der SET PASSWORD-Anweisung

  • Verwenden des befehlszeilenbasierten Clientprogramms mysqladmin

  • Verwenden der UPDATE-Anweisung

Um Passwörter mit SET PASSWORD zuzuweisen, stellen Sie als root eine Verbindung zum Server her und setzen zwei SET PASSWORD-Anweisungen ab. Beachten Sie dabei, dass Sie das Passwort mit der PASSWORD()-Funktion verschlüsseln müssen.

Unter Windows geben Sie Folgendes ein:

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');

Unter Unix geben Sie Folgendes ein:

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

In der zweiten SET PASSWORD-Anweisung ersetzen Sie host_name durch den Namen des Serverhosts. Dies ist derselbe Hostname, den Sie bei der Zuweisung der Passwörter für die anonymen Konten verwendet haben.

Um für die root-Konten Passwörter mit mysqladmin zu konfigurieren, führen Sie folgende Befehle aus:

shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"

Diese Befehle gelten für Windows und Unix gleichermaßen. Im zweiten Befehl ersetzen Sie host_name durch den Namen des Serverhosts. Die doppelten Anführungszeichen, die das Passwort umgeben, sind nicht immer erforderlich; Sie sollten sie aber verwenden, wenn das Passwort Leerzeichen oder andere Zeichen enthält, die Ihr Befehls-Interpreter als Sonderzeichen interpretiert.

Sie können auch mithilfe von UPDATE die Tabelle user direkt bearbeiten. Die folgende UPDATE-Anweisung weist beiden root-Konten gleichzeitig ein Passwort zu:

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

Die UPDATE-Anweisung gilt für Windows und Unix gleichermaßen.

Nachdem die Passwörter konfiguriert wurden, müssen Sie immer, wenn Sie eine Serververbindung herstellen, das Passwort angeben. Wollen Sie also etwa mysqladmin zum Herunterfahren des Servers verwenden, dann tun Sie das mit folgendem Befehl:

shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)

Hinweis: Wenn Sie Ihr root-Passwort nach der Konfiguration vergessen haben, finden Sie in Abschnitt A.4.1, „Wie ein vergessenes Kennwort zurückgesetzt wird“, Informationen dazu, wie Sie das Passwort zurücksetzen.

Um weitere Konten einzurichten, können Sie die Anweisung GRANT verwenden. Informationen zur Vorgehensweise finden Sie in Abschnitt 5.9.2, „Hinzufügen neuer MySQL-Benutzer“.

2.10. MySQL aktualisieren (Upgrade/Downgrade)

Generell empfehlen wir, Upgrades nur von einer Release-Serie zur nächsten durchzuführen und keine Serien auszulassen. Wenn Sie beispielsweise derzeit MySQL 4.0 verwenden und dann auf eine neuere Serie aktualisieren wollen, führen Sie ein Upgrade auf MySQL 4.1 und nicht auf 5.0 oder 5.1 durch.

Die folgende Checkliste sollten Sie immer überprüfen, wenn Sie ein Upgrade durchführen:

  • Vor der Aktualisierung von MySQL 5.0 auf 5.1 lesen Sie Abschnitt 2.10.1, „Upgrade von MySQL 5.0“, und Anhang D, MySQL-Änderungsverlauf (Change History). Dort finden Sie Informationen zu Funktionen, die bei MySQL 5.1 neu sind oder sich von jenen in MySQL 5.0 unterscheiden. Wenn Sie von einer Release-Serie vor MySQL 5.0 aus ein Upgrade durchführen wollen, sollten Sie nacheinander von Release-Serie zu Release-Serie aktualisieren, bis Sie MySQL 5.0 erreicht haben; danach können Sie auf MySQL 5.1 aktualisieren. Informationen zu Upgrades von MySQL 5.0 finden Sie im MySQL 5.0 Reference Manual. MySQL-Referenzhandbuch für die Versionen 3.23, 4.0 und 4.1 enthält die entsprechenden Angaben zu früheren Releases.

  • Bevor Sie das Upgrade durchführen, sichern Sie Ihre Datenbanken einschließlich der mysql-Datenbank, die Ihre Grant-Tabellen enthält.

  • Einige Releases von MySQL enthalten Änderungen an der Struktur der Grant-Tabellen, damit neue Berechtigungen oder Funktionen hinzugefügt werden können. Wenn Sie ein Upgrade auf eine neue MySQL-Version durchführen, sollten Sie Ihre Grant-Tabellen aktualisieren, damit sichergestellt ist, dass diese auf der aktuellen Struktur basieren und auf diese Weise neue Funktionalitäten nutzen können. Siehe auch Abschnitt 5.6, „mysql_fix_privilege_tables — Upgrade von MySQL-Systemtabellen“.

  • Wenn Sie MySQL Server unter Windows betreiben, lesen Sie Abschnitt 2.3.15, „Upgrade von MySQL unter Windows“.

  • Wenn Sie die Replikation nutzen, finden Sie in Abschnitt 6.7, „Upgrade eines Replikationssetups“, weitere Informationen zur Aktualisierung Ihrer Replikationskonfiguration.

  • Haben Sie zuvor bereits eine MySQL-Max-Distribution installiert, die einen Server namens mysqld-max enthält, und wollen nun auf eine Nicht-Max-Version von MySQL aktualisieren, dann beachten Sie, dass mysqld_safe nach wie vor versucht, den alten Server mysqld-max auszuführen. Wenn Sie ein Upgrade durchführen, sollten Sie den alten mysqld-max-Server manuell entfernen, um sicherzustellen, dass mysqld_safe den neuen Server mysqld ausführt.

Sie können die Format- und Datendateien von MySQL jederzeit zwischen verschiedenen Versionen derselben Architektur hin- und herschieben, solange Sie die Release-Serie nicht wechseln. Wenn Sie den Zeichensatz bei der Ausführung von MySQL ändern, dann müssen Sie myisamchk -r -q --set-collation=collation_name für alle MyISAM-Tabellen ausführen. Andernfalls werden Ihre Indizes unter Umständen nicht korrekt sortiert, weil sich bei einer Änderung des Zeichensatzes auch die Sortierreihenfolge ändern kann.

Wenn Sie in Bezug auf neue Versionen eher vorsichtig sind, können Sie Ihr vorhandenes mysqld immer umbenennen, bevor Sie eine neue Version installieren. Verwenden Sie beispielsweise MySQL 5.0.13 und wollen auf 5.1.10 aktualisieren, dann benennen Sie Ihren aktuellen Server von mysqld zu mysqld-5.0.13 um. Tut Ihr neuer Server mysqld dann etwas Unerwartetes, dann können Sie ihn einfach herunterfahren und mit Ihrem alten mysqld neu starten.

Wenn Sie nach Durchführung eines Upgrades auf Probleme in Zusammenhang mit neu kompilierten Clientprogrammen (z. B. die Fehlermeldung Commands out of sync) stoßen oder unerwartete Speicherauszüge auftreten, dann haben Sie bei der Kompilierung Ihrer Programme wahrscheinlich alte Header- oder Bibliotheksdateien angegeben. In diesem Fall sollten Sie das Datum Ihrer Datei mysql.h und der Bibliothek libmysqlclient.a überprüfen, um sicherzustellen, dass diese der aktuellen MySQL-Distribution entstammen. Andernfalls müssen Sie Ihre Programme mit den neuen Headern und Bibliotheken neu kompilieren.

Wenn Probleme in der Art auftreten, dass der neue mysqld-Server nicht startet oder Sie ohne Passwort keine Verbindung herstellen können, dann schauen Sie nach, ob Sie nicht noch eine alte my.cnf-Datei von Ihrer vorherigen Installation verwenden. Diese Überprüfung können Sie mithilfe der Option --print-defaults vornehmen (z. B. mysqld --print-defaults). Wenn dieser Befehl etwas anderes als den Programmnamen anzeigt, dann beeinträchtigt eine aktive my.cnf den Server- oder Clientbetrieb.

Wenn Sie einen neuen MySQL-Release installieren, bietet es sich immer an, das Perl-Modul DBD::mysql neu zu erstellen und zu installieren. Gleiches gilt auch für die anderen MySQL-Schnittstellen wie die PHP-Erweiterung mysql und das Python-Modul MySQLdb.

2.10.1. Upgrade von MySQL 5.0

Wenn Sie von einer 5.0-Installation auf 5.0.10 oder höher aktualisieren, beachten Sie, dass es unumgänglich ist, Ihre Grant-Tabellen zu aktualisieren. Andernfalls wird die Erstellung gespeicherter Prozeduren und Funktionen unter Umständen nicht funktionieren. Die entsprechende Vorgehensweise ist in Abschnitt 5.6, „mysql_fix_privilege_tables — Upgrade von MySQL-Systemtabellen“, beschrieben.

Hinweis: Es ist gängige Praxis, Ihre Daten vor der Installation einer neuen Softwareversion zu sichern. Auch wenn MySQL mit Eifer daran arbeitet, ein möglichst hohes Qualitätsniveau zu erzielen, sollten Sie Ihre Daten immer schützen, indem Sie eine Sicherungskopie erstellen. MySQL empfiehlt in der Regel, dass Sie Ihre Tabellen aus vorherigen Versionen speichern und dann neu laden, um auf 5.1 zu aktualisieren.

Generell sollten Sie beim Upgrade von MySQL 5.0 auf 5.1 Folgendes tun:

  • Überprüfen Sie die Einträge in den weiter unten in diesem Abschnitt vorhandenen Änderungslisten darauf, ob Ihre Anwendungen hierdurch auf irgendeine Weise betroffen sein könnten. Achten Sie dabei insbesondere auf solche Änderungen, die mit dem Vermerk Inkompatible Änderung versehen sind. Diese führen zu Inkompatibilitäten mit früheren MySQL-Versionen und können Ihre Aufmerksamkeit bereits vor Durchführung des Upgrades erfordern.

  • Lesen Sie die Änderungshistorie von MySQL 5.1 im Hinblick auf die wesentlichen neuen Funktionen, die Sie in Version 5.1 verwenden können. Siehe auch Abschnitt D.1, „Änderungen in Release 5.1.x (Entwicklung)“.

  • Wenn Sie MySQL Server unter Windows betreiben, lesen Sie Abschnitt 2.3.15, „Upgrade von MySQL unter Windows“.

  • Wenn Sie die Replikation nutzen, finden Sie in Abschnitt 6.7, „Upgrade eines Replikationssetups“, weitere Informationen zur Aktualisierung Ihrer Replikationskonfiguration.

Die nachfolgenden Listen beschreiben Änderungen, die unter Umständen Anwendungen betreffen können und die Sie beachten sollten, wenn Sie auf Version 5.1 aktualisieren.

Änderungen beim Server:

  • Inkompatible Änderung: MySQL 5.1 implementiert die Unterstützung einer sehr flexiblen Plug-In-API, die das Laden und Entladen verschiedener Komponenten während der Laufzeit gestattet, ohne dass der Server neu gestartet werden müsste. Siehe auch Abschnitt 26.2, „Die MySQL-Plug-In-Schnittstelle“. Die Plug-In-API benötigt die Tabelle mysql.plugin. Wenn Sie von einer älteren MySQL-Version aktualisieren, sollten Sie den Befehl mysql_fix_privilege_tables ausführen, um diese Tabelle zu erstellen. Siehe auch Abschnitt 5.6, „mysql_fix_privilege_tables — Upgrade von MySQL-Systemtabellen“.

    Plug-Ins werden in das Verzeichnis installiert, welches in der Systemvariablen plugin_dir spezifiziert ist. Diese Variable steuert auch die Position, von der der Server benutzerdefinierte Funktionen (User-Defined Functions, UDFs) lädt; dies stellt eine Änderung zu früheren Versionen von MySQL dar. Mithin müssen alle UDF-Bibliotheksdateien von jetzt an in das Plug-In-Verzeichnis installiert werden. Wenn Sie von einer älteren MySQL-Version aktualisieren, müssen Sie Ihre UDF-Dateien in das Plug-In-Verzeichnis migrieren.

  • Die Systemvariable table_cache wurde umbenannt in table_open_cache. Skripten, die table_cache verwenden, sollten so angepasst werden, dass sie den neuen Namen benutzen.

  • Inkompatible Änderung: Die Struktur der FULLTEXT-Indizes wurde in MySQL 5.1.6 geändert. Nach der Aktualisierung auf MySQL 5.1.6 oder höher müssen Sie die REPAIR TABLE-Anweisung für jede Tabelle aufrufen, die FULLTEXT-Indizes enthält.

SQL-Änderungen

  • Inkompatible Änderung: Der Namespace für Trigger wurde in MySQL 5.0.10 geändert. Vorher mussten Trigger-Namen je Tabelle eindeutig sein. Nun muss eine Eindeutigkeit innerhalb des Schemas (Datenbank) gegeben sein. Eine Auswirkung dieser Änderung besteht darin, dass die Syntax DROP TRIGGER nun statt eines Tabellennamens einen Schemanamen verwendet (wobei dieser Schemaname optional ist; wird er weggelassen, dann wird das aktuelle Schema verwendet).

    Wenn Sie von einer vorherigen Version von MySQL 5 auf MySQL 5.0.10 oder höher aktualisieren, müssen Sie alle Trigger löschen und sie neu erstellen; andernfalls wird DROP TRIGGER nach dem Upgrade nicht funktionieren. Gehen Sie am besten wie folgt vor:

    1. Aktualisieren Sie auf MySQL 5.0.10 oder höher, um auf die Trigger-Daten in der Tabelle INFORMATION_SCHEMA.TRIGGERS zugreifen zu können. (Dies sollte auch für Trigger aus Versionen vor 5.0.10 funktionieren.)

    2. Speichern Sie alle Trigger-Definitionen mithilfe der folgenden SELECT-Anweisung:

      SELECT CONCAT('CREATE TRIGGER ', t.TRIGGER_SCHEMA, '.', t.TRIGGER_NAME,
                    ' ', t.ACTION_TIMING, ' ', t.EVENT_MANIPULATION, ' ON ',
                    t.EVENT_OBJECT_SCHEMA, '.', t.EVENT_OBJECT_TABLE,
                    ' FOR EACH ROW ', t.ACTION_STATEMENT, '//' )
      INTO OUTFILE '/tmp/triggers.sql'
      FROM INFORMATION_SCHEMA.TRIGGERS AS t;
      

      Die Anweisung verwendet INTO OUTFILE, d. h., Sie müssen die Berechtigung FILE haben. Die Datei wird auf dem Serverhost erstellt; wenn Sie wollen, können Sie einen anderen Dateinamen verwenden. Um hundertprozentig sicher zu sein, überprüfen Sie die Trigger-Definitionen in der Datei triggers.sql und fertigen unter Umständen eine Sicherung der Datei an.

    3. Beenden Sie den Server und löschen Sie alle Trigger, indem Sie sämtliche .TRG-Dateien in Ihren Datenbankverzeichnissen entfernen. Wechseln Sie dann in Ihr Datenverzeichnis und setzen Sie folgenden Befehl ab:

      shell> rm */*.TRG
      
    4. Starten Sie den Server und erstellen Sie alle Trigger mithilfe der triggers.sql-Datei neu: In meinem Fall sah dies beispielsweise so aus:

      mysql> delimiter // ;
      mysql> source /tmp/triggers.sql //
      
    5. Vergewissern Sie sich, dass alle Trigger mit der SHOW TRIGGERS-Anweisung erfolgreich erstellt wurden.

  • Inkompatible Änderung: MySQL 5.1.6 hat die Berechtigung TRIGGER neu eingeführt. Zuvor benötigte man die Berechtigung SUPER zum Erstellen oder Löschen von Triggern. Jetzt ist für derartige Vorgänge die Berechtigung TRIGGER erforderlich. Dies ist eine Sicherheitsoptimierung, da Sie Benutzern nun nicht länger die Berechtigung SUPER gewähren müssen, damit diese Trigger erstellen können. Allerdings wurde die Anforderung, dass das Konto, welches in der DEFINER-Klausel eines Triggers genannt wird, die Berechtigung SUPER haben muss, dadurch ersetzt, dass das Konto nun die Berechtigung TRIGGER erfordert. Wenn Sie von einer früheren MySQL 5-Version auf MySQL 5.1.6 oder höher aktualisieren, sollten Sie überprüfen, welche Konten in der DEFINER-Klausel vorhandener Trigger aufgeführt sind, und sicherstellen, dass diese Konten die Berechtigung TRIGGER haben. Andernfalls werden sie bei Aktivierung fehlschlagen. Mit der folgenden Anweisung können Sie ermitteln, welche Konten in den DEFINER-Klauseln aufgeführt sind:

    SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.TRIGGERS;
    

    Wenn Sie diesen Konten die Berechtigung TRIGGER gewährt haben, können Sie die Berechtigung SUPER für diejenigen Konten widerrufen, die Sie nicht anderweitig benötigen.

  • Einige Schlüsselwörter sind in MySQL 5.1 reserviert, bei denen dies in MySQL 5.0 nicht der Fall war. Siehe auch Abschnitt 9.5, „Ist MySQL pingelig hinsichtlich reservierter Wörter?“.

  • Die Anweisungen INSTALL PLUGIN und UNINSTALL PLUGIN, die für die Plug-In-API verwendet werden, sind neu. Gleiches gilt für die Klausel WITH PARSER der FULLTEXT-Indexerstellung, die ein Parser-Plug-In mit einem Volltextindex verknüpft. Abschnitt 26.2, „Die MySQL-Plug-In-Schnittstelle“.

2.10.2. Upgrade auf eine andere Architektur

Sie können die .frm-, .MYI- und .MYD-Dateien für MyISAM-Tabellen zwischen verschiedenen Architekturen kopieren, die dasselbe Fließkommaformat unterstützen. (MySQL sorgt automatisch für das erforderliche Austauschen von Bytes.) Siehe auch Abschnitt 14.1, „Die MyISAM-Speicher-Engine“.

In Fällen, in denen Sie Datenbanken zwischen verschiedenen Architekturen transferieren müssen, können Sie mit mysqldump eine Datei mit SQL-Anweisungen erstellen. Danach übertragen Sie die Datei auf das andere System und verwenden es dort als Eingabe für den mysql-Client.

Mit mysqldump --help erfahren Sie, welche Optionen vorhanden sind. Wenn Sie die Daten auf eine neuere Version von MySQL verschieben, sollten Sie mysqldump --opt verwenden, denn so profitieren Sie von allen Optimierungen, die zu einer kleineren Speicherdatei führen, welche sich auch schneller verarbeiten lässt.

Die einfachste (wenn auch nicht schnellste) Möglichkeit, eine Datenbank zwischen zwei Computern zu verschieben, besteht darin, die folgenden Befehle auf dem Rechner auszuführen, auf dem die Datenbank sich befindet:

shell> mysqladmin -h 'other_hostname' create db_name
shell> mysqldump --opt db_name | mysql -h 'other_hostname' db_name

Wollen Sie eine Datenbank von einem entfernten Computer über ein langsames Netzwerk kopieren, dann können Sie die folgenden Befehle verwenden:

shell> mysqladmin create db_name
shell> mysqldump -h 'other_hostname' --opt --compress db_name | mysql db_name

Sie können die Daten auch in einer Datei ablegen, diese auf den Zielcomputer übertragen und dann dort in die Datenbank einladen. So können Sie etwa eine Datenbank wie folgt in einer komprimierten Datei auf dem Quellcomputer speichern:

shell> mysqldump --quick db_name | gzip > db_name.gz

Übertragen Sie die Datei mit den Datenbankinhalten auf den Zielcomputer und führen Sie dort folgende Befehle aus:

shell> mysqladmin create db_name
shell> gunzip < db_name.gz | mysql db_name

Sie können auch mysqldump und mysqlimport zur Übertragung der Datenbank verwenden. Bei großen Tabellen ist das wesentlich schneller als die einfache Verwendung von mysqldump. Bei den folgenden Befehlen steht DUMPDIR für den vollständigen Pfadnamen des Verzeichnisses, in dem Sie die Ausgabe von mysqldump speichern.

Zunächst erstellen Sie das Verzeichnis für die Ausgabedateien und speichern dann die Datenbank:

shell> mkdir DUMPDIR
shell> mysqldump --tab=DUMPDIR db_name

Danach übertragen Sie die Dateien im Verzeichnis DUMPDIR in das entsprechende Verzeichnis auf dem Zielcomputer und laden die Dateien dann dort in MySQL ein:

shell> mysqladmin create db_name           # create database
shell> cat DUMPDIR/*.sql | mysql db_name   # create tables in database
shell> mysqlimport db_name DUMPDIR/*.txt   # load data into tables

Vergessen Sie nicht, die mysql-Datenbank zu kopieren, da darin die Grant-Tabellen gespeichert sind. Unter Umständen müssen Sie die Befehle auf dem neuen Computer als MySQL-root-Benutzer ausführen, bis Ihre mysql-Datenbank vor Ort ist.

Nachdem Sie die mysql-Datenbank auf dem neuen System importiert haben, führen Sie mysqladmin flush-privileges aus, damit der Server die Grant-Tabelle-Daten neu lädt.

2.11. Downgrade von MySQL

Dieser Abschnitt erläutert, was Sie tun sollten, um in dem unwahrscheinlichen Fall, dass eine ältere MySQL-Version besser funktionierte als eine neue Version, ein Downgrade durchzuführen.

Führen Sie das Downgrade innerhalb derselben Release-Serie durch (z. B. von 5.0.13 auf 5.0.12), dann müssen Sie in der Regel nur die neuen Binärdateien über die alten installieren. Mit den Datenbanken müssen Sie nichts machen. Allerdings empfiehlt es sich wie immer auch hier, ein Backup zu erstellen.

Die folgende Checkliste sollten Sie immer überprüfen, wenn Sie ein Downgrade durchführen:

  • Lesen Sie den Abschnitt zur Aktualisierung auf die Release-Serie, von der aus Sie das Downgrade durchführen, um sicherzustellen, dass diese nicht bestimmte Funktionen enthält, die Sie doch benötigen. Siehe Abschnitt 2.10, „MySQL aktualisieren (Upgrade/Downgrade)“.

  • Wenn für die betreffende Version ein Abschnitt zum Downgrade vorhanden ist, sollten Sie diesen ebenfalls sorgfältig lesen.

In den meisten Fällen können Sie die Format- und Datendateien von MySQL zwischen verschiedenen Versionen derselben Architektur hin- und herschieben, solange Sie die Release-Serie nicht wechseln.

Wenn Sie das Downgrade von einer Release-Serie auf eine andere durchführen, kann es bei den Speicherformaten der Tabellen zu Inkompatibilitäten kommen. In diesem Fall können Sie Ihre Tabellen vor dem Downgrade mithilfe von mysqldump speichern. Laden Sie nach Abschluss des Downgrades die Speicherauszugsdatei mit mysql oder mysqlimport, um die Tabellen neu zu erstellen. Beispiele finden Sie in Abschnitt 2.10.2, „Upgrade auf eine andere Architektur“.

Das offensichtlichste Symptom bei Downgrade-Inkompatibilitäten des Tabellenformats besteht darin, dass Sie Tabellen nicht öffnen können. Gehen Sie in diesem Fall wie folgt vor:

  1. Beenden Sie den älteren MySQL Server, auf den Sie das Downgrade durchführen.

  2. Starten Sie den neueren MySQL Server, von dem aus Sie das Downgrade durchführen.

  3. Speichern Sie alle Tabellen, auf die der ältere Server nicht zugreifen konnte, mithilfe von mysqldump, um eine Speicherauszugsdatei zu erstellen.

  4. Beenden Sie den neueren MySQL Server und starten Sie den älteren neu.

  5. Laden Sie die Speicherauszugsdatei in den älteren Server. Nun sollten Sie auf Ihre Tabellen zugreifen können.

2.12. Betriebssystemspezifische Anmerkungen

2.12.1. Linux (alle Linux-Versionen)

Dieser Abschnitt beschreibt Probleme, die unter Linux aufgetreten sind. Die ersten Teilabschnitte schildern dabei betriebssystemspezifische Probleme allgemeiner Art, Probleme in Bezug auf die Verwendung von Binär- oder Quelldistributionen und Probleme nach Abschluss der Installation. Im Weiteren werden Probleme erläutert, die unter Linux auf bestimmten Plattformen auftreten.

Beachten Sie, dass die meisten dieser Probleme unter älteren Linux-Versionen auftreten. Wenn Sie eine neuere Version verwenden, werden Sie wahrscheinlich gar nichts bemerken.

2.12.1.1. Anmerkungen zum Betriebssystem Linux

MySQL setzt die Linux-Version 2.0 oder höher voraus.

Warnung: Auf SMP-Systemen sind merkwürdige Probleme bei der Kombination Linux 2.2.14 und MySQL aufgetreten. Ferner haben uns einige MySQL-Benutzer mitgeteilt, dass sie schwerwiegende Stabilitätsprobleme bei der Verwendung von MySQL mit dem Kernel 2.2.14 hatten. Wenn Sie diesen Kernel verwenden, sollten Sie auf die Kernel-Version 2.2.19 (oder höher) oder auf Version 2.4 aktualisieren. Bei Multiprozessorsystemen sollten Sie die Verwendung der Kernel-Version 2.4 in jedem Fall in Betracht ziehen, da Sie dadurch einen erheblichen Geschwindigkeitszuwachs erfahren werden. Außerdem wird sich so die Stabilität Ihres Systems erhöhen.

Wenn Sie LinuxThreads verwenden, sollten mindestens drei laufende mysqld-Prozesse angezeigt werden. Das sind tatsächlich Threads. Ein Thread ist für den LinuxThreads-Manager, ein weiterer zur Verwaltung der Verbindungen und der dritte zur Verwaltung von Alarmmeldungen und Signalen.

2.12.1.2. Anmerkungen zur Binärdistribution (Linux)

Die MySQL-Binär- und -RPM-Releases für die Linux-Intel-Kombination sind für optimale Geschwindigkeit konfiguriert. Wir versuchen immer, den schnellsten stabilen Compiler zu finden, der verfügbar ist.

Der Binär-Release wird mit -static verknüpft, d. h., Sie müssen sich in der Regel keine Gedanken darüber machen, welche Version der Systembibliotheken Sie haben. Sie müssen auch LinuxThreads nicht installieren. Ein mit -static verknüpftes Programm ist ein wenig größer als ein dynamisch verknüpftes Programm, aber auch ein bisschen schneller (ca. 3 bis 5 Prozent). Allerdings besteht ein Problem bei statisch verknüpften Programmen darin, dass Sie keine UDFs (User-Defined Functions, benutzerdefinierte Funktionen) verwenden können. Wenn Sie UDFs schreiben oder verwenden wollen (dies ist nur etwas für C- oder C++-Programmierer), dann müssen Sie MySQL selbst mit dynamischer Verknüpfung kompilieren.

Ein bekanntes Problem bei Binärdistributionen besteht darin, dass auf älteren Linux-Systemen, die libc verwenden (also z. B. Red Hat 4.x oder Slackware), gelegentlich Schwierigkeiten in Verbindung mit der Auflösung der Hostnamen auftreten (diese sind jedoch nicht schwerwiegend). Verwendet Ihr System libc statt glibc2, dann werden Sie wahrscheinlich Probleme in Verbindung mit der Hostnamensauflösung und getpwnam() haben. Diese treten auf, weil glibc (leider) auf einige externe Bibliotheken angewiesen ist, um die Namensauflösung und getpwent() implementieren zu können – und zwar auch dann, wenn mit der Option -static kompiliert wurde. Diese Probleme äußern sich auf zweierlei Weise:

  • Bei der Ausführung von mysql_install_db erhalten Sie die folgende Fehlermeldung:

    Sorry, the host 'xxxx' could not be looked up
    

    Sie können dieses Problem beheben, indem Sie mysql_install_db --force ausführen, was dazu führt, dass der Test resolveip in mysql_install_db nicht ausgeführt wird. Der Nachteil besteht darin, dass Sie Hostnamen nicht in Grant-Tabellen verwenden können; mit Ausnahme von localhost müssen Sie dann immer die entsprechenden IP-Adressen angeben. Wenn Sie eine alte MySQL-Version verwenden, die --force nicht unterstützt, dann müssen Sie den Test resolveip in mysql_install manuell mit einem Texteditor entfernen.

  • Unter Umständen erhalten Sie auch die folgende Fehlermeldung, wenn Sie versuchen, mysqld mit der Option --user auszuführen:

    getpwnam: No such file or directory
    

    Um dieses Problem zu umgehen, starten Sie mysqld mit dem Befehl su statt durch Angabe der Option --user. Auf diese Weise ändert das System die Benutzerkennung des mysqld-Prozesses selbst, d. h. mysqld muss dies nicht erledigen.

Eine andere Lösung, die beide Probleme behebt, besteht darin, keine Binärdistribution zu verwenden. Beschaffen Sie sich eine MySQL-Quelldistribution (im RPM- oder tar.gz-Format) und installieren Sie diese stattdessen.

Bei manchen Linux 2.2-Versionen erhalten Sie unter Umständen die Fehlermeldung Resource temporarily unavailable, wenn Clients über TCP/IP sehr schnell viele neue Verbindungen mit einem mysqld-Server herstellen. Das Problem besteht darin, dass bei Linux zwischen dem Moment, zu dem ein TCP/IP-Socket von Ihnen geschlossen wird, und dem Zeitpunkt der tatsächlichen Freigabe des Sockets eine Verzögerung auftritt. Es ist nur für eine endliche Anzahl von TCP/IP-Slots Platz vorhanden; deswegen sind zu wenig Ressourcen vorhanden, wenn Clients innerhalb kurzer Zeit zu viele neue TCP/IP-Verbindungen anfordern. Beispielsweise tritt dieser Fehler auf, wenn Sie den MySQL-Benchmark test-connect über TCP/IP ausführen.

Wir haben dieses Problem einige Male auf verschiedenen Linux-Mailinglisten beschrieben, konnten aber niemals eine geeignete Lösung finden. Der einzige bekannte „Fix“ besteht darin, dass Clients Permanentverbindungen verwenden oder Sie, wenn Sie den Datenbankserver und die Clients auf demselben Rechner ausführen, Verbindungen via Unix-Socketdatei statt TCP/IP-Verbindungen einsetzen.

2.12.1.3. Anmerkungen zur Linux-Quelldistribution

Die folgenden Anmerkungen zu glibc betreffen Sie nur, wenn Sie MySQL selbst erstellen. Wenn Sie Linux auf einem x86-Computer ausführen, sollten Sie in den meisten Fällen besser unsere Binärdistribution verwenden. Wir verknüpfen unsere Binärdateien zur jeweils am besten gepatchten Version von glibc, die wir finden können, und mit den bestmöglichen Compiler-Einstellungen, um sie so für hochbeanspruchte Server zu optimieren. Für normale Benutzer ist unsere Binärdistribution auch in Setups mit vielen gleichzeitigen Verbindungen oder Tabellen, die die 2-Gbyte-Grenze sprengen, in den meisten Fällen erste Wahl. Wenn Sie nach der Lektüre des folgenden Texts nicht genau wissen, wie Sie vorgehen sollen, probieren Sie zunächst unsere Binärdatei aus, um zu ermitteln, ob diese für Ihre Anforderungen geeignet ist. Sollten Sie feststellen, dass dies nicht der Fall ist, dann sollten Sie eine selbsterstellte Version erproben. In diesem Fall würden wir uns freuen, wenn Sie uns dies mitteilen würden, damit wir beim nächsten Mal eine bessere Binärdistribution erstellen können.

MySQL verwendet LinuxThreads unter Linux. Wenn Sie eine alte Linux-Version verwenden, die glibc2 nicht enthält, dann müssen Sie LinuxThreads installieren, bevor Sie MySQL zu kompilieren versuchen. Sie bekommen LinuxThreads unter http://dev.mysql.com/downloads/os-linux.html.

Beachten Sie, dass glibc-Versionen bis einschließlich 2.1.1 beim Umgang mit pthread_mutex_timedwait(), welches beim Absetzen von INSERT DELAYED-Anweisungen verwendet wird, einen schweren Bug aufweisen. Wir empfehlen Ihnen, INSERT DELAYED erst nach der Aktualisierung von glibc zu verwenden.

Beachten Sie, dass der Linux-Kernel und die LinuxThread-Bibliothek standardmäßig maximal 1024 Threads verwalten können. Wenn Sie mehr als 1000 gleichzeitige Verbindungen vorsehen, dann müssen Sie wie folgt ein paar Änderungen an LinuxThreads vornehmen:

  • Erhöhen Sie den Wert PTHREAD_THREADS_MAX in sysdeps/unix/sysv/linux/bits/local_lim.h auf 4096 und verringern Sie STACK_SIZE in linuxthreads/internals.h auf 256 Kbyte. Die Pfade sind relativ zum Stammverzeichnis von glibc. (Beachten Sie, dass MySQL bei 600 bis 1000 Verbindungen nicht stabil läuft, wenn STACK_SIZE auf der Vorgabe von 2 Mbyte belassen wird.)

  • Kompilieren Sie LinuxThreads erneut, um eine neue libpthread.a-Bibliothek zu erzeugen, und verknüpfen Sie MySQL dann wieder damit.

Weitere Informationen dazu, wie Sie Thread-Beschränkungen in LinuxThreads umgehen, finden Sie unter http://www.volano.com/linuxnotes.html.

Es gibt noch ein weiteres Problem, dass die Performance von MySQL insbesondere auf SMP-Systemen erheblich beeinträchtigt. glibc 2.1 weist eine sehr schwache Mutex-Implementierung in LinuxThreads für Programme mit vielen Threads auf, die das Mutex nur für eine kurze Zeit halten. Die Folgen sind paradox: Wenn Sie MySQL mit einer nicht modifizierten LinuxThreads-Version verbinden, können Sie die Leistungsfähigkeit von MySQL in vielen Fällen verbessern, indem Sie Prozessoren aus dem SMP entfernen! Wir haben für glibc 2.1.3 unter http://dev.mysql.com/Downloads/Linux/linuxthreads-2.1-patch einen Patch bereitgestellt, um dieses Verhalten zu korrigieren.

Bei glibc 2.2.2 verwendet MySQL das adaptive Mutex, welches wesentlich besser ist als bei glibc 2.1.3 (auch in der gepatchten Version). Wir wollen aber darauf hinweisen, dass der aktuelle Mutex-Code in glibc 2.2.2 gelegentlich zu viel des Guten tut, wodurch die MySQL-Performance wieder beeinträchtigt wird. Die Wahrscheinlichkeit, dass ein solches Verhalten auftritt, kann dadurch verringert werden, dass man dem Prozess mysqld die höchste Priorität zuweist. Wir konnten das Problem zudem ebenfalls mit einem Patch beheben, den Sie unter http://dev.mysql.com/Downloads/Linux/linuxthreads-2.2.2.patch finden. Dieser Patch korrigiert alle drei hier beschriebenen Probleme: das STACK_SIZE-Problem, das Problem der Thread-Beschränkung und das Mutex-Problem. Er muss im Verzeichnis linuxthreads mit patch -p0 </tmp/linuxthreads-2.2.2.patch angewendet werden. Wir hoffen, dass er in irgendeiner Form in zukünftigen Releases von glibc 2.2 enthalten sein wird. In jedem Fall müssen Sie bei der Verknüpfung mit glibc 2.2.2 STACK_SIZE und PTHREAD_THREADS_MAX korrigieren. Wir hoffen, dass die Standardeinstellungen in Zukunft auf Werte korrigiert werden, die für hochbeanspruchte MySQL Server geeigneter sind; in diesem Fall ließen sich die Befehle zur Erstellung eines eigenen Builds auf ./configure; make; make install beschränken.

Wir empfehlen Ihnen, diese Patches zur Erstellung einer speziellen statischen Version von libpthread.a zu verwenden und diese dann nur für die statische Verknüpfung mit MySQL zu verwenden. Wir wissen, dass diese Patches in Verbindung mit MySQL einwandfrei funktionieren und die Leistungsfähigkeit erheblich verbessern, können jedoch nichts zu ihren Auswirkungen auf andere Anwendungen sagen. Wenn Sie andere Anwendungen verknüpfen, die LinuxThreads mit einer anderen als der gepatchten statischen Version der Bibliothek benötigen, oder eine gepatchte gemeinsame Version erstellen und diese auf Ihrem System installieren, dann tun Sie dies auf eigenes Risiko.

Sollten während der Installation von MySQL merkwürdige Probleme auftreten oder bestimmte gängige Hilfsprogramme stehen bleiben, dann ist dies mit hoher Wahrscheinlichkeit durch die Bibliothek oder den Compiler verursacht. Wenn dies der Fall ist, dann können Sie diese Probleme mithilfe unserer Binärdistribution lösen.

Wenn Sie eigene MySQL-Clientprogramme verknüpfen, dann wird unter Umständen die folgende Fehlermeldung zur Laufzeit angezeigt:

ld.so.1: fatal: libmysqlclient.so.#:
open failed: No such file or directory

Dieses Problem lässt sich auf eine der folgenden Weisen lösen:

  • Verknüpfen Sie die Clients mit dem Flag -Wl,r/full/path/to/libmysqlclient.so statt mit -Lpath.

  • Kopieren Sie libmysqclient.so nach /usr/lib.

  • Fügen Sie den Pfadnamen des Verzeichnisses, in dem sich libmysqlclient.so befindet, der Umgebungsvariablen LD_RUN_PATH hinzu, bevor Sie den Client ausführen.

Wenn Sie den Fujitsu-Compiler (fcc/FCC) verwenden, treten unter Umständen Probleme bei der Kompilierung von MySQL auf, weil die Linux-Header-Dateien sehr stark auf gcc ausgerichtet sind. Der folgende configure-Befehl sollte auch für fcc/FCC funktionieren:

CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE \
    -DCONST=const -DNO_STRTOLL_PROTO" \
CXX=FCC CXXFLAGS="-O -K fast -K lib \
    -K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE \
    -DCONST=const -Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO \
    '-D_EXTERN_INLINE=static __inline'" \
./configure \
    --prefix=/usr/local/mysql --enable-assembler \
    --with-mysqld-ldflags=-all-static --disable-shared \
    --with-low-memory

2.12.1.4. Anmerkungen zu Linux: nach der Installation

mysql.server finden Sie im Verzeichnis support-files, das sich im MySQL-Installationsverzeichnis befindet, oder in einem MySQL-Source-Tree. Sie können es als /etc/init.d/mysql installieren, um MySQL automatisch zu starten und zu beenden. Siehe auch Abschnitt 2.9.2.2, „MySQL automatisch starten und anhalten“.

Wenn MySQL nicht genügend Dateien oder Verbindungen öffnen kann, haben Sie Linux möglicherweise nicht so konfiguriert, dass es genug Dateien verwalten kann.

Unter Linux 2.2 und höher können Sie die Anzahl zugewiesener Datei-Handles wie folgt überprüfen:

shell> cat /proc/sys/fs/file-max
shell> cat /proc/sys/fs/dquot-max
shell> cat /proc/sys/fs/super-max

Wenn Sie mehr als 16 Mbyte Speicher haben, sollten Sie Ihre Skripten durch einen Zusatz in der Art des folgenden ergänzen (z. B. /etc/init.d/boot.local unter SuSE Linux):

echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max

Sie können die echo-Befehle auf der Befehlszeile auch als root ausführen, aber diese Einstellungen gehen beim nächsten Neustart Ihres Computers verloren.

Alternativ stellen Sie diese Parameter für den Start mithilfe des Tools sysctl ein, welches von vielen Linux-Distributionen (einschließlich SuSE Linux 8.0 und höher) verwendet wird. Tragen Sie die folgenden Werte in eine Datei namens /etc/sysctl.conf ein:

# Increase some values for MySQL
fs.file-max = 65536
fs.dquot-max = 8192
fs.super-max = 1024

Außerdem sollten Sie Folgendes in /etc/my.cnf ergänzen:

[mysqld_safe]
open-files-limit=8192

Auf diese Weise konfigurieren Sie für den Server eine Gesamtbeschränkung der Verbindungen und offenen Dateien auf 8192.

Die Konstante STACK_SIZE in LinuxThreads steuert das Spacing von Thread-Stapeln im Adressraum. Dieses muss groß genug sein, um genügend Raum für jeden einzelnen Thread-Stapel bereitzustellen, aber auch klein genug, um zu verhindern, dass der Stapel bestimmter Threads mit den globalen mysqld-Daten kollidiert. Leider trennt, wie wir durch Experimentieren festgestellt haben, die Linux-Implementierung von mmap() einen bereits zugeordneten Bereich wieder auf, wenn Sie sie anweisen, die Zuordnung einer derzeit verwendeten Adresse aufzulösen: Es wird kein Fehler zurückgegeben, sondern alle Daten auf der gesamten Seite werden auf null gesetzt. Insofern hängt die Sicherheit von mysqld und allen anderen Thread-basierten Anwendungen vom „wohlwollenden“ Verhalten des Codes ab, der die Threads erstellt. Der Benutzer muss Maßnahmen ergreifen, um sicherzustellen, dass die Anzahl laufender Threads jederzeit so niedrig ist, dass es nicht zum Konflikt zwischen den Thread-Stapeln und dem globalen Bereich kommt. Bei mysqld sollten Sie dieses Verhalten erzwingen, indem Sie der Variablen max_connections einen sinnvollen Wert zuweisen.

Wenn Sie MySQL selbst erstellen, können Sie LinuxThreads für eine bessere Stapelnutzung patchen. Siehe auch Abschnitt 2.12.1.3, „Anmerkungen zur Linux-Quelldistribution“. Wenn Sie LinuxThreads aber nicht patchen wollen, sollten Sie max_connections auf einen Wert von maximal 500 setzen. Arbeiten Sie mit einem großen Schlüsselpuffer, großen Heap-Tabellen oder anderen Materialien, die zu einer umfassenden Speicherzuweisung durch mysqld führen, oder verwenden Sie die Kernel-Version 2.2 mit einem 2-Gbyte-Patch, dann sollte der Wert noch kleiner sein. Wenn Sie unsere Binär- oder RPM-Version verwenden, können Sie max_connections beruhigt auf 1500 setzen, sofern Sie weder große Schlüsselpuffer noch datenintensive Heap-Tabellen benutzen. Je stärker Sie STACK_SIZE in LinuxThreads verringern, desto mehr Threads können Sie gefahrlos erstellen. Wir empfehlen Werte zwischen 128 und 256 Kbyte.

Wenn Sie zahlreiche nebenläufige Verbindungen verwenden, können Sie einem „Feature“ im Kernel 2.2 zum Opfer fallen, das Fork-Bomb-Angriffe verhindern soll, indem Prozesse, die untergeordnete Prozesse aufspalten oder klonen, eine Strafe erhalten. Hierdurch wird die Skalierbarkeit zunehmend beeinträchtigt, je größer die Anzahl nebenläufiger Clients ist. Auf Systemen mit nur einem Prozessor manifestiert sich dies unseren Beobachtungen zufolge in einer sehr langsamen Thread-Erstellung: Die Verbindungsherstellung mit MySQL kann sehr lange (bis zu einer Minute) dauern; Gleiches gilt für das Abbauen der Verbindung. Auf Multiprozessorsystemen haben wir bei steigender Clientanzahl eine allmähliche Abnahme der Abfragegeschwindigkeit feststellen können. Im Zuge der Lösung dieses Problems haben wir von einem unserer Benutzer einen Kernel-Patch erhalten, der seinen Angaben zufolge auf seiner Site geholfen haben soll. Dieser Patch ist unter http://dev.mysql.com/Downloads/Patches/linux-fork.patch verfügbar. Wir haben den Patch sowohl in Entwicklungs- als auch in Produktionssystemen umfassend getestet und festgestellt, dass sich die MySQL-Performance hierdurch erheblich verbessert, ohne dass es zu Problemen kommt. Deswegen empfehlen wir Benutzern, die hochbeanspruchte Server mit Kernel-Version 2.2 betreiben, seine Anwendung.

In der Kernel-Version 2.4 wurde das Problem behoben; wenn Sie also nicht mit der aktuellen Leistungsfähigkeit Ihres Systems zufrieden sind, ist es unter Umständen einfacher, ein Upgrade auf Version 2.4 durchzuführen, statt Ihren 2.2-Kernel zu patchen. Auf SMP-Systemen erhalten Sie neben der Problembehandlung zusätzlich noch eine beträchtliche SMP-Steigerung.

Wir haben MySQL mit dem Kernel 2.4 auf einem System mit zwei Prozessoren getestet und festgestellt, dass sich MySQL wesentlich besser skalieren lässt. Es gab im gesamten Testbereich bis 1000 Clients praktisch keine Verringerung des Abfragedurchsatzes, und der MySQL-Skalierungsfaktor (berechnet als Verhältnis des maximalen Durchsatzes zum Durchsatz pro Client) lag bei 180 %. Ähnliche Ergebnisse konnten wir auf einem System mit vier CPUs beobachten: praktisch keine Verlangsamung, während die Anzahl der Clients auf 1000 erhöht wurde, und dazu ein Skalierungsfaktor von 300 %. Basierend auf diesen Ergebnissen empfehlen wir für hochbeanspruchte SMP-Server mit dem Kernel 2.2 derzeit in jedem Fall eine Aktualisierung auf Kernel 2.4.

Unseren Beobachtungen zufolge ist es unumgänglich, den Prozess mysqld unter dem Kernel 2.4 mit höchstmöglicher Priorität auszuführen, um maximale Leistung zu erzielen. Dies ist möglich, indem der Befehl renice -20 $$ zu mysqld_safe hinzugefügt wird. Bei unseren Tests mit einem 4-CPU-Rechner haben wir eine 60-prozentige Durchsatzsteigerung bei 400 Clients erzielt.

Ferner versuchen wir derzeit auch, weitere Informationen dazu zu sammeln, wie gut MySQL mit dem Kernel 2.4 auf 4-Wege- und 8-Wege-Systemen funktioniert. Wenn Sie Zugang zu einem solchen System haben und einige Benchmarks erstellt haben, möchten wir Sie bitten, eine E-Mail mit den Ergebnissen an zu senden. Wir werden diese prüfen und ggf. in das Handbuch aufnehmen.

Wenn Sie einen abgestürzten mysqld-Serverprozess mit ps erkennen, dann weist dies normalerweise darauf hin, dass Sie einen Bug in MySQL entdeckt haben oder eine Tabelle beschädigt ist. Siehe auch Abschnitt A.4.2, „Was zu tun ist, wenn MySQL andauernd abstürzt“.

Um, wenn mysqld mit einem SIGSEGV-Signal abstürzt, unter Linux einen Speicherauszug zu erhalten, können Sie mysqld mit der Option --core-file starten. Beachten Sie, dass Sie wahrscheinlich auch die Größe der Speicherauszugsdatei erhöhen müssen, indem Sie ulimit -c 1000000 zu mysqld_safe hinzufügen oder mysqld_safe mit --core-file-size=1000000 starten. Siehe auch Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“.

2.12.1.5. Anmerkungen zu Linux x86

MySQL erfordert libc 5.4.12 oder höher. Bekanntermaßen funktioniert es mit libc 5.4.46. glibc 2.0.6 und höher sollten ebenfalls keine Probleme bereiten. Es hat in der Vergangenheit einige Probleme mit den glibc-RPMs von Red Hat gegeben. Prüfen Sie also bei Auftreten von Problemen, ob Updates vorhanden sind. Die glibc-RPMs 2.0.7-19 und 2.0.7-29 RPMs funktionieren ebenfalls einwandfrei.

Wenn Sie Red Hat 8.0 oder eine neue glibc 2.2.x-Bibliothek verwenden, werden Sie unter Umständen feststellen, dass sich mysqld in gethostbyaddr() aufhängt. Dies geschieht, weil die neue glibc-Bibliothek eine Stapelgröße von mehr als 128 Kbyte für diesen Aufruf benötigt. Um das Problem zu beheben, starten Sie mysqld mit der Option --thread-stack=192K. (Verwenden Sie -O thread_stack=192K bei MySQL vor Version 4.) Diese Stapelgröße ist bei MySQL 4.0.10 und höher voreingestellt, weswegen das Problem bei diesen Versionen nicht auftreten sollte.

Wenn Sie zur Kompilierung von MySQL gcc 3.0 und höher verwenden, müssen Sie die Bibliothek libstdc++v3 vor der MySQL-Kompilierung installieren, da Sie andernfalls bei der Verknüpfung eine Fehlermeldung zu einem fehlenden __cxa_pure_virtual-Symbol erhalten.

Bei einigen älteren Linux-Distributionen erzeugt configure unter Umständen einen Fehler wie den folgenden:

Syntax error in sched.h. Change _P to __P in the
/usr/include/sched.h file.
See the Installation chapter in the Reference Manual.

Tun Sie einfach, was die Fehlermeldung vorschlägt: Ergänzen Sie den Makronamen _P, der nur einen Unterstrich aufweist, um einen weiteren Unterstrich und probieren Sie es dann erneut.

Bei der Kompilierung werden unter Umständen Warnungen angezeigt. Die folgenden können dabei ignoriert werden:

mysqld.cc -o objs-thread/mysqld.o
mysqld.cc: In function `void init_signals()':
mysqld.cc:315: warning: assignment of negative value `-1' to
`long unsigned int'
mysqld.cc: In function `void * signal_hand(void *)':
mysqld.cc:346: warning: assignment of negative value `-1' to
`long unsigned int'

Wenn mysqld beim Start immer einen Speicherauszug erzeugt, kann dies möglicherweise durch eine veraltete /lib/libc.a verursacht worden sein. Versuchen Sie sie umzubenennen, entfernen Sie sql/mysqld, führen Sie ein neues make install durch und probieren Sie es dann erneut. Dieses Problem wurde für einige Slackware-Installationen gemeldet.

Wenn Sie die folgende Fehlermeldung beim Verknüpfen von mysqld erhalten, ist Ihre libg++.a nicht korrekt installiert:

/usr/lib/libc.a(putc.o): In function `_IO_putc':
putc.o(.text+0x0): multiple definition of `_IO_putc'

Sie können die Verwendung von libg++.a vermeiden, indem Sie configure wie folgt ausführen:

shell> CXX=gcc ./configure

2.12.1.6. Anmerkungen zu Linux SPARC

Bei einigen Implementierungen ist readdir_r() fehlerhaft. Das Symptom besteht darin, dass die SHOW DATABASES-Anweisung immer eine leere Menge zurückgibt. Dies lässt sich durch Entfernen von HAVE_READDIR_R aus der Datei config.h nach der Konfiguration, aber vor der Kompilierung durchführen.

2.12.1.7. Anmerkungen zu Linux Alpha

Wir haben MySQL 5.1 unter Linux Alpha mit unseren Benchmarks und unserer Testsuite getestet, und es scheint gut zu funktionieren.

Derzeit erstellen wir die MySQL-Binärpakete unter SuSE Linux 7.0 für AXP, Kernel 2.4.4-SMP, Compaq C-Compiler (V6.2-505) und Compaq C++-Compiler (V6.3-006) auf einem Compaq DS20-Computer mit einem Alpha EV6-Prozessor.

Sie finden die genannten Compiler unter http://www.support.compaq.com/alpha-tools/. Durch Verwendung dieser Compiler anstelle von gcc erhalten wir eine um ca. 9 bis 14 Prozent bessere MySQL-Performance.

Bei MySQL unter Alpha verwenden wir das Flag -arch generic für unsere Kompilierungsoptionen. Hierdurch ist sichergestellt, dass die Binärdatei auf allen Alpha-Prozessoren läuft. Wir kompilieren auch statisch, um Probleme mit Bibliotheken zu vermeiden. Der configure-Befehl sieht wie folgt aus:

CC=ccc CFLAGS="-fast -arch generic" CXX=cxx \
CXXFLAGS="-fast -arch generic -noexceptions -nortti" \
./configure --prefix=/usr/local/mysql --disable-shared \
    --with-extra-charsets=complex --enable-thread-safe-client \
    --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared

Wenn Sie egcs benutzen wollen, funktioniert unserer Erfahrung nach folgende configure-Zeile:

CFLAGS="-O3 -fomit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --disable-shared

Es gibt ein paar bekannte Probleme bei der Ausführung von MySQL unter Linux-Alpha:

  • Das Debugging von Thread-basierten Anwendungen wie MySQL funktioniert mit gdb 4.18 nicht. Verwenden Sie stattdessen gdb 5.1.

  • Wenn Sie versuchen, mysqld bei der Verwendung von gcc statisch zu verknüpfen, dann tritt beim Start des resultierenden Images ein Speicherauszug auf. Anders gesagt: Verwenden Sie keinesfalls --with-mysqld-ldflags=-all-static mit gcc.

2.12.1.8. Anmerkungen zu Linux PowerPC

MySQL sollte auf MkLinux mit dem neuesten glibc-Paket funktionieren (getestet mit glibc 2.0.7).

2.12.1.9. Anmerkungen zu Linux MIPS

Um MySQL auf Qube2 (Linux Mips) zum Laufen zu bringen, benötigen Sie die neuesten glibc-Bibliotheken. glibc-2.0.7-29C2 funktioniert bekanntermaßen. Sie müssen ferner den C++-Compiler egcs verwenden (egcs 1.0.2-9, gcc 2.95.2 oder höher).

2.12.1.10. Anmerkungen zu Linux IA-64

Um MySQL unter Linux IA-64 kompilieren zu können, verwenden wir den folgenden configure-Befehl zur Erstellung mit gcc 2.96:

CC=gcc \
CFLAGS="-O3 -fno-omit-frame-pointer" \
CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti" \
    ./configure --prefix=/usr/local/mysql \
    "--with-comment=Official MySQL binary" \
    --with-extra-charsets=complex

Unter IA-64 verwenden die MySQL-Clientbinärdateien gemeinsame Bibliotheken. Das bedeutet, dass Sie, wenn Sie unsere Binärdistribution in einem anderen Verzeichnis als /usr/local/mysql installieren, den Pfad des Verzeichnisses, in dem libmysqlclient.so installiert ist, entweder der Datei /etc/ld.so.conf oder dem Wert der Umgebungsvariablen LD_LIBRARY_PATH hinzufügen müssen.

Siehe auch Abschnitt A.3.1, „Probleme beim Linken mit der MySQL-Clientbibliothek“.

2.12.2. Anmerkungen zu Mac OS X

Unter Mac OS X kann tar lange Dateinamen nicht verarbeiten. Wenn Sie eine .tar.gz-Distribution entpacken müssen, verwenden Sie stattdessen gnutar.

2.12.2.1. Mac OS X 10.x (Darwin)

MySQL sollte unter Mac OS X 10.x (Darwin) ohne größere Probleme funktionieren.

Die folgenden Probleme sind bekannt:

  • Die Verbindungszeiten (wait_timeout, interactive_timeout und net_read_timeout) werden nicht beachtet.

    Dies ist wahrscheinlich ein Signalverwaltungsproblem in der Thread-Bibliothek, wo das Signal eine anhängige Leseoperation nicht unterbricht. Wir hoffen, dass ein künftiges Update der Thread-Bibliotheken dieses Problem beheben wird.

Unsere Binärdatei für Mac OS X wird unter Darwin 6.3 mit der folgenden configure-Zeile kompiliert:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti" \
    ./configure --prefix=/usr/local/mysql \
    --with-extra-charsets=complex --enable-thread-safe-client \
    --enable-local-infile --disable-shared

Siehe auch Abschnitt 2.5, „Installation von MySQL unter Mac OS X“.

2.12.2.2. Mac OS X Server

Bei aktuellen Versionen von Mac OS X Server sind vor der Kompilierung keine Betriebssystemänderungen erforderlich. Die Kompilierung für die Serverplattform ist mit der für die Clientversion von Mac OS X identisch.

Bei älteren Versionen (Mac OS X Server 1.2, auch bekannt als „Rhapsody“) müssen Sie zunächst ein pthread-Paket installieren, bevor Sie MySQL konfigurieren können.

Siehe auch Abschnitt 2.5, „Installation von MySQL unter Mac OS X“.

2.12.3. Anmerkungen zu Solaris

Unter Solaris haben Sie möglicherweise schon die ersten Probleme, bevor Sie die MySQL-Distribution überhaupt entpacken können, denn tar unter Solaris kann mit langen Dateinamen nicht umgehen. Dies bedeutet, dass Ihnen unter Umständen Fehler angezeigt werden, wenn Sie MySQL entpacken.

In diesem Fall müssen Sie GNU tar (gtar) zum Entpacken der Distribution verwenden. Sie finden eine vorkompilierte Kopie für Solaris unter http://dev.mysql.com/downloads/os-solaris.html.

Native Sun-Threads funktionieren erst ab Solaris 2.5. Bis Solaris 2.4 verwendet MySQL automatisch MIT-pthreads. Siehe auch Abschnitt 2.8.5, „Anmerkungen zu MIT-pthreads“.

Wenn die folgende Fehlermeldung bei Ausführung von configure angezeigt wird, stimmt etwas mit Ihrer Compiler-Installation nicht:

checking for restartable system calls... configure: error can not
run test programs while cross compiling

In diesem Fall sollten Sie den Compiler auf eine neuere Version aktualisieren. Sie können das Problem möglicherweise auch beheben, indem Sie die folgende Zeile in die Datei config.cache einfügen:

ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}

Wenn Sie Solaris auf einem SPARC-System verwenden, wird gcc 2.95.2 oder 3.2 als Compiler empfohlen. Sie finden ihn unter http://gcc.gnu.org/. Beachten Sie, dass egcs 1.1.1 und gcc 2.8.1 auf SPARC nicht zuverlässig arbeiten.

Die empfohlene configure-Zeile sieht bei Verwendung von gcc 2.95.2 wie folgt aus:

CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory \
    --enable-assembler

Bei Verwendung eines UltraSPARC-Systems erhalten Sie eine um 4 Prozent bessere Performance, wenn Sie -mcpu=v8 -Wa,-xarch=v8plusa zu den Umgebungsvariablen CFLAGS und CXXFLAGS hinzufügen.

Wenn Sie den Forte-Compiler 5.0 oder höher von Sun einsetzen, können Sie configure wie folgt ausführen:

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \
CXX=CC CXXFLAGS="-noex -mt" \
./configure --prefix=/usr/local/mysql --enable-assembler

Um eine 64-Bit-Binärdatei mit Sun Forte zu erstellen, verwenden Sie die folgenden Konfigurationsoptionen:

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \
./configure --prefix=/usr/local/mysql --enable-assembler

Wenn Sie eine 64-Bit-Solaris-Binärdatei mit gcc erstellen wollen, ergänzen Sie -m64 in CFLAGS und CXXFLAGS und entfernen Sie --enable-assembler aus der configure-Zeile.

In den MySQL-Benchmarks erhielten wir auf UltraSPARC bei der Verwendung von Forte 5.0 im 32-Bit-Modus im Vergleich zu gcc 3.2 mit dem Flag -mcpu einen Geschwindigkeitszuwachs von 4 Prozent.

Wenn Sie eine 64-Bit-mysqld-Binärdatei erstellen, ist diese um 4 Prozent langsamer als die 32-Bit-Binärdatei, kann aber mehr Threads und Speicher verwalten.

Wenn Sie Solaris 10 für x86_64 einsetzen, sollten Sie alle Dateisysteme einbinden, auf denen Sie InnoDB-Dateien mit der Option forcedirectio speichern wollen. (Standardmäßig erfolgt die Einbindung ohne diese Option.) Andernfalls entsteht ein erheblicher Leistungseinbruch, wenn die InnoDB-Speicher-Engine auf dieser Plattform verwendet wird.

Wenn Sie auf ein Problem mit fdatasync oder sched_yield stoßen, können Sie es beheben, indem Sie LIBS=-lrt zur configure-Zeile hinzufügen.

Bei Versionen des WorkShop-Compilers vor 5.3 müssen Sie eventuell das Skript configure bearbeiten. Die Zeile

#if !defined(__STDC__) || __STDC__ != 1

ändern Sie wie folgt:

#if !defined(__STDC__)

Wenn Sie __STDC__ mit der Option -Xc aktivieren, kann der Sun-Compiler keine Kompilierung mit der pthread.h-Header-Datei von Solaris durchführen. Dies ist ein Sun-spezifischer Bug (beschädigter Compiler oder beschädigte Include-Datei).

Wenn mysqld die folgende Fehlermeldung bei der Ausführung ausgibt, haben Sie versucht, MySQL mit dem Sun-Compiler zu kompilieren, ohne die Multithread-Option -mt zu aktivieren:

libc internal error: _rmutex_unlock: rmutex not held

Fügen Sie -mt zu CFLAGS und CXXFLAGS hinzu und kompilieren Sie neu.

Wenn Sie die SFW-Version von gcc verwenden (in Solaris 8 enthalten), dann müssen Sie /opt/sfw/lib zur Umgebungsvariablen LD_LIBRARY_PATH hinzufügen, bevor Sie configure ausführen.

Verwenden Sie das auf sunfreeware.com verfügbare gcc, dann werden Sie eine Menge Probleme haben. Um dies zu vermeiden, sollten Sie gcc und GNU binutils auf dem Computer kompilieren, auf dem sie auch ausgeführt werden sollen.

Wenn Sie bei der Kompilierung von MySQL mit gcc folgende Fehlermeldung erhalten, ist Ihr gcc nicht für Ihre Solaris-Version konfiguriert:

shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
./thr_alarm.c: In function `signal_hand':
./thr_alarm.c:556: too many arguments to function `sigwait'

In diesem Fall besteht die richtige Lösung einzig und allein darin, sich die neueste Version von gcc zu besorgen und sie mit Ihrem aktuellen gcc-Compiler zu kompilieren. Zumindest bei Solaris 2.5 enthalten praktisch alle Binärversionen von gcc alte, unbrauchbare Include-Dateien, die Thread-basierte (und wohl auch weitere) Programme beschädigen.

Solaris bietet keine statischen Versionen aller Systembibliotheken (libpthreads und libdl) an, d. h., Sie können MySQL nicht mit --static kompilieren. Wenn Sie es dennoch versuchen, erhalten Sie eine der folgenden Fehlermeldungen:

ld: fatal: library -ldl: not found
undefined reference to `dlopen'
cannot find -lrt

Wenn Sie eigene MySQL-Clientprogramme verknüpfen, dann wird unter Umständen die folgende Fehlermeldung zur Laufzeit angezeigt:

ld.so.1: fatal: libmysqlclient.so.#:
open failed: No such file or directory

Dieses Problem lässt sich auf eine der folgenden Weisen lösen:

  • Verknüpfen Sie die Clients mit dem Flag -Wl,r/full/path/to/libmysqlclient.so statt mit -Lpath.

  • Kopieren Sie libmysqclient.so nach /usr/lib.

  • Fügen Sie den Pfadnamen des Verzeichnisses, in dem sich libmysqlclient.so befindet, der Umgebungsvariablen LD_RUN_PATH hinzu, bevor Sie den Client ausführen.

Wenn Sie Probleme haben, configure mit -lz zu verknüpfen, weil zlib nicht installiert ist, dann haben Sie zwei Möglichkeiten:

  • Wenn Sie das komprimierte Kommunikationsprotokoll einsetzen können wollen, müssen Sie zlib bei ftp.gnu.org herunterladen und installieren.

  • Sie führen configure mit der Option --with-named-z-libs=no aus, wenn Sie MySQL erstellen.

Wenn Sie gcc verwenden und Probleme beim Einladen von UDFs (User-Defined Functions, benutzerdefinierte Funktionen) in MySQL haben, ergänzen Sie die Verknüpfungszeile für die UDF um -lgcc.

Wollen Sie, dass MySQL automatisch startet, dann können Sie support-files/mysql.server in das Verzeichnis /etc/init.d kopieren und eine symbolische Verknüpfung namens /etc/rc3.d/S99mysql.server zu ihr erstellen.

Wenn zu viele Prozesse innerhalb kurzer Zeit eine Verbindung mit mysqld herstellen wollen, werden Sie die folgende Fehlermeldung im MySQL-Log finden:

Error in accept: Protocol error

Dieses Problem können Sie unter Umständen beheben, indem Sie den Server mit der Option --back_log=50 starten. (Bei MySQL vor Version 4 verwenden Sie -O back_log=50.)

Solaris unterstützt Core-Dateien für setuid()-Anwendungen nicht, d. h., Sie können keine Core-Datei von mysqld erhalten, wenn Sie die Option --user verwenden.

2.12.3.1. Anmerkungen zu Solaris 2.7/2.8

Normalerweise können Sie eine Binärdatei für Solaris 2.6 auch unter Solaris 2.7 oder 2.8 verwenden. Auch betreffen Probleme, die für Solaris 2.6 gelistet sind, meist ebenfalls Solaris 2.7 und 2.8.

MySQL sollte neue Versionen von Solaris automatisch erkennen können und für die im Folgenden beschriebenen Probleme Workarounds aktivieren.

Solaris 2.7 und 2.8 haben einige Bugs bei den Include-Dateien. Bei Verwendung von gcc erhalten Sie unter Umständen folgende Fehlermeldung:

/usr/include/widec.h:42: warning: `getwc' redefined
/usr/include/wchar.h:326: warning: this is the location of the previous
definition

In diesem Fall können Sie das Problem beheben, indem Sie /usr/include/widec.h nach .../lib/gcc-lib/os/gcc-version/include kopieren. Die Zeile 41

#if     !defined(lint) && !defined(__lint)

ändern Sie wie folgt:

#if     !defined(lint) && !defined(__lint) && !defined(getwc)

Alternativ können Sie /usr/include/widec.h auch direkt editieren. Wenn Sie das Problem auf eine der beschriebenen Weisen behoben haben, sollten Sie config.cache entfernen und configure erneut ausführen.

Wenn Sie bei der Ausführung von make die folgenden Fehlermeldungen erhalten, liegt das daran, dass configure die Datei curses.h nicht erkannt hat (wahrscheinlich aufgrund des Fehlers in /usr/include/widec.h):

In file included from mysql.cc:50:
/usr/include/term.h:1060: syntax error before `,'
/usr/include/term.h:1081: syntax error before `;'

Dieses Problem lässt sich auf mehreren Wegen lösen:

  • Konfigurieren Sie mit CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H ./configure.

  • Bearbeiten Sie /usr/include/widec.h wie im vorherigen Abschnitt beschrieben und führen Sie configure erneut aus.

  • Entfernen Sie die Zeile #define HAVE_TERM aus der Datei config.h und führen Sie make erneut aus.

Wenn Ihr Linker beim Verknüpfen von Clientprogrammen -lz nicht finden kann, besteht das Problem wahrscheinlich darin, dass Ihre Datei libz.so in /usr/local/lib installiert ist. Dieses Problem lässt sich auf eine der folgenden Weisen lösen:

  • Fügen Sie /usr/local/lib zu LD_LIBRARY_PATH hinzu.

  • Fügen Sie von /lib aus eine Verknüpfung zu libz.so hinzu.

  • Wenn Sie Solaris 8 verwenden, können Sie die optionale zlib von Ihrer Solaris 8-Distributions-CD installieren.

  • Sie führen configure mit der Option --with-named-z-libs=no aus, wenn Sie MySQL erstellen.

2.12.3.2. Anmerkungen zu Solaris x86

Unter Solaris 8 auf x86 erzeugt mysqld einen Speicherauszug, wenn Sie die Debugsymbole mithilfe von strip entfernen.

Wenn Sie gcc oder egcs unter Solaris x86 verwenden und bei hoher Belastung Probleme mit Speicherauszügen haben, sollten Sie folgenden configure-Befehl verwenden:

CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \
CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti -DHAVE_CURSES_H" \
./configure --prefix=/usr/local/mysql

Hierdurch vermeiden Sie Probleme mit der Bibliothek libstdc++ und mit C++-Ausnahmefehlern.

Sollte dies nicht helfen, dann sollten Sie eine Debugversion kompilieren und diese mit einer Trace-Datei oder unter gdb ausführen. Siehe auch Abschnitt E.1.3, „mysqld unter gdb debuggen“.

2.12.4. Anmerkungen zu BSD

In diesem Abschnitt erhalten Sie Informationen zur Verwendung von MySQL unter Varianten von BSD Unix.

2.12.4.1. Anmerkungen zu FreeBSD

FreeBSD 4.x oder neuer wird für die Ausführung von MySQL empfohlen, da das Thread-Paket wesentlich besser integriert ist. Um ein sicheres und stabiles System zu erhalten, sollten Sie nur FreeBSD-Kernels verwenden, die mit -RELEASE gekennzeichnet sind.

Die einfachste (und deswegen empfohlene) Vorgehensweise zur Installation von MySQL besteht in der Verwendung der mysql-server- und mysql-client-Ports, die unter http://www.freebsd.org/ verfügbar sind. Die Verwendung dieser Ports hat die folgenden Vorteile:

  • Sie erhalten ein funktionsfähiges MySQL, bei dem alle Optimierungen, die unter Ihrer FreeBSD-Version bekanntermaßen funktionieren, bereits aktiviert sind.

  • Konfiguration und Erstellung werden automatisch durchgeführt.

  • Startskripten sind in /usr/local/etc/rc.d installiert.

  • Sie können mit pkg_info -L überprüfen, welche Dateien installiert sind.

  • Sie können ferner mit pkg_delete MySQL entfernen, wenn Sie es auf Ihrem Rechner nicht mehr benötigen.

Wir empfehlen die Verwendung von MIT-pthreads unter FreeBSD 2.x und von nativen Threads unter FreeBSD 3 und höher. Zwar können auch spätere Versionen von Release 2.2.x mit nativen Threads betrieben werden, aber dann kann es zu Problemen beim Herunterfahren von mysqld kommen.

Leider sind bestimmte Funktionsaufrufe unter FreeBSD noch nicht vollständig Thread-sicher. Dies betrifft vor allem die Funktion gethostbyname(), die von MySQL zur Umwandlung von Hostnamen in IP-Adressen verwendet wird. Unter bestimmten Umständen verursacht der Prozess mysqld unvermittelt eine Prozessorauslastung von 100 Prozent und reagiert nicht mehr. Wenn dieses Problem auftritt, versuchen Sie MySQL mit der Option --skip-name-resolve zu starten.

Alternativ können Sie MySQL unter FreeBSD 4.x mit der LinuxThreads-Bibliothek verknüpfen, wodurch einige der Probleme vermieden werden, die die native Thread-Implementierung von FreeBSD hat. Einen sehr guten Vergleich von LinuxThreads und nativen Threads finden Sie in Jeremy Zawodnys Artikel FreeBSD or Linux for your MySQL Server? unter http://jeremy.zawodny.com/blog/archives/000697.html.

Es gibt ein bekanntes Problem bei der Verwendung von LinuxThreads unter FreeBSD:

  • Die Verbindungszeiten (wait_timeout, interactive_timeout und net_read_timeout) werden nicht beachtet. Auffälliges Symptom ist, dass Permanentverbindungen für eine sehr lange Zeit hängen, ohne abgebaut zu werden, und dass eine Terminierung des Threads erst Erfolg hat, wenn der Thread einem neuen Befehl zugeordnet wird.

    Dies ist wahrscheinlich ein Signalverwaltungsproblem in der Thread-Bibliothek, wo das Signal eine anhängige Leseoperation nicht unterbricht. Das Problem wird voraussichtlich in FreeBSD 5.0 behoben.

Damit der MySQL-Erstellungsprozess funktioniert, ist GNU make (gmake) erforderlich. Wenn GNU make nicht vorhanden ist, müssen Sie es vor der Kompilierung von MySQL installieren.

Die empfohlene Vorgehensweise zur Kompilierung und Installation von MySQL unter FreeBSD mit gcc (2.95.2 und höher) ist die folgende:

CC=gcc CFLAGS="-O2 -fno-strength-reduce" \
    CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions \
    -felide-constructors -fno-strength-reduce" \
    ./configure --prefix=/usr/local/mysql --enable-assembler
gmake
gmake install
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
bin/mysqld_safe &

Wenn Sie feststellen, dass configure MIT-pthreads verwendet, lesen Sie die Anmerkungen zu MIT-pthreads. Siehe auch Abschnitt 2.8.5, „Anmerkungen zu MIT-pthreads“.

Wenn make install die Fehlermeldung ausgibt, dass es /usr/include/pthreads nicht finden kann, dann hat configure nicht erkannt, dass Sie MIT-pthreads benötigen. Um dieses Problem zu beheben, entfernen Sie config.cache und führen configure dann erneut mit der Option --with-mit-threads aus.

Achten Sie darauf, dass Ihre Namensauflösung korrekt ist. Andernfalls werden Verzögerungen oder Fehler bei der Auflösung auftreten, wenn Sie die Verbindung mit mysqld herzustellen versuchen. Ferner müssen Sie sicherstellen, dass der Eintrag localhost in der Datei /etc/hosts korrekt ist. Am Anfang der Datei sollte eine Zeile ähnlich der folgenden stehen:

127.0.0.1       localhost localhost.your.domain

FreeBSD hat bekanntermaßen einen sehr niedrigen Standardwert für Datei-Handles. Siehe auch Abschnitt A.2.17, „Datei nicht gefunden“. Starten Sie den Server unter Verwendung der Option --open-files-limit für mysqld_safe oder heben Sie den Wert für den Benutzer mysqld in /etc/login.conf an und erstellen Sie die Datei dann mit cap_mkdb /etc/login.conf neu. Achten Sie außerdem darauf, die passende Klasse für diesen Benutzer in der Passwortdatei zu konfigurieren, sofern Sie die Vorgabe nicht verwenden (benutzen Sie chpass mysqld-user-name). Siehe auch Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“.

FreeBSD beschränkt die Größe eines Prozesses auch dann auf 512 Mbyte, wenn auf Ihrem System wesentlich mehr Arbeitsspeicher vorhanden ist. Insofern kann ein Fehler wie der folgende auftreten:

Out of memory (Needed 16391 bytes)

Bei den aktuellen Versionen von FreeBSD (mindestens seit 4.x) können Sie den Grenzwert auch anheben, indem Sie die folgenden Einträge in der Datei /boot/loader.conf hinzufügen und den Computer neu starten (diese Einstellungen lassen sich nicht zur Laufzeit mit dem Befehl sysctl ändern):

kern.maxdsiz="1073741824" # 1GB
kern.dfldsiz="1073741824" # 1GB
kern.maxssiz="134217728" # 128MB

Bei älteren FreeBSD-Versionen müssen Sie Ihren Kernel neu kompilieren, um die maximale Datensegmentgröße für einen Prozess zu ändern. In diesem Fall sollten Sie sich die Option MAXDSIZ in der Konfigurationsdatei LINT näher ansehen, um weitere Informationen zu erhalten.

Wenn es Probleme mit dem aktuellen Daten in MySQL gibt, sollte eine Einstellung der Variablen TZ Abhilfe leisten können. Siehe auch Anhang F, Umgebungsvariablen.

2.12.4.2. Anmerkungen zu NetBSD

Zur Kompilierung unter NetBSD benötigen Sie GNU make. Andernfalls schlägt der Erstellungsprozess fehl, wenn make versucht, lint für C++-Dateien auszuführen.

2.12.4.3. Anmerkungen zu OpenBSD

Unter OpenBSD 2.5 können Sie MySQL mit nativen Threads kompilieren. Hierzu verwenden Sie die folgenden Optionen:

CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no

2.12.4.4. Anmerkungen zu BSD/OS

Wenn Sie die folgende Fehlermeldung bei der Kompilierung von MySQL erhalten, ist der Wert ulimit für den virtuellen Speicher auf Ihrem System zu niedrig:

item_func.h: In method
`Item_func_ge::Item_func_ge(const Item_func_ge &)':
item_func.h:28: virtual memory exhausted
make[2]: *** [item_func.o] Error 1

Verwenden Sie beispielsweise ulimit -v 80000 und führen Sie make erneut aus. Funktioniert dies nicht und Sie verwenden bash, dann probieren Sie stattdessen csh oder sh aus. Einige BSDI-Benutzer haben Probleme mit bash und ulimit gemeldet.

Wenn Sie gcc einsetzen, müssen Sie unter Umständen auch das Flag --with-low-memory verwenden, damit configure sql_yacc.cc kompilieren kann.

Wenn es Probleme mit den aktuellen Daten in MySQL gibt, sollte eine Einstellung der Variablen TZ Abhilfe leisten können. Siehe auch Anhang F, Umgebungsvariablen.

2.12.4.5. Anmerkungen zu BSD/OS Version 3.x

Aktualisieren Sie auf BSD/OS 3.1. Sollte dies nicht möglich sein, dann installieren Sie BSDIpatch M300-038.

Verwenden Sie den folgenden Befehl zur Konfiguration von MySQL:

env CXX=shlicc++ CC=shlicc2 \
./configure \
    --prefix=/usr/local/mysql \
    --localstatedir=/var/mysql \
    --without-perl \
    --with-unix-socket-path=/var/mysql/mysql.sock

Auch die folgende Variante funktioniert bekanntermaßen:

env CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure \
    --prefix=/usr/local/mysql \
    --with-unix-socket-path=/var/mysql/mysql.sock

Sie können die Verzeichnispositionen auf Wunsch ändern oder die Voreinstellungen übernehmen (hierzu geben Sie einfach keine Positionen an).

Sollten Leistungsprobleme unter starker Belastung auftreten, dann probieren Sie die Option --skip-thread-priority für mysqld. Hierdurch werden alle Threads mit derselben Priorität ausgeführt. Unter BSDI 3.1 können Sie auf diese Weise die Performance verbessern – zumindest so lange, bis BSDI den Thread-Scheduler in Ordnung bringt.

Wird bei der Kompilierung die Fehlermeldung virtual memory exhausted angezeigt, dann sollten Sie ulimit -v 80000 ausprobieren und make erneut ausführen. Funktioniert dies nicht und Sie verwenden bash, dann probieren Sie stattdessen csh oder sh aus. Einige BSDI-Benutzer haben Probleme mit bash und ulimit gemeldet.

2.12.4.6. Anmerkungen zu BSD/OS Version 4.x

BSDI 4.x weist einige Bugs in Bezug auf Threads auf. Wenn Sie MySQL hierunter verwenden wollen, sollten Sie alle Thread-spezifischen Patches installieren. Dis gilt zumindest für M400-023.

Auf einigen BSDI 4.x-Systemen treten Probleme mit gemeinsamen Bibliotheken auf. Sie erkennen dies daran, dass Sie keine Clientprogramme wie etwa mysqladmin ausführen können. In diesem Fall müssen Sie das System so umkonfigurieren, dass es keine gemeinsamen Bibliotheken verwendet; dies tun Sie mit der Option --disable-shared für configure.

Ferner haben Kunden Probleme unter BSDI 4.0.1 damit gehabt, dass die Binärdatei mysqld nach einer Weile keine Tabellen mehr öffnen konnte. Ursache hierfür ist ein bibliotheks- oder systembezogener Bug, aufgrund dessen mysqld das aktuelle Verzeichnis wechselt, ohne hierfür zuvor eine Bestätigung angefordert zu haben.

Sie beseitigen das Problem, indem Sie entweder MySQL auf Version 3.23.34 oder höher aktualisieren oder nach der Ausführung von configure die Zeile #define HAVE_REALPATH aus der Datei config.h entfernen, bevor Sie make starten.

Beachten Sie, dass dies bedeutet, dass Sie in diesem Fall unter BSDI keine symbolischen Verknüpfungen zwischen Datenbankverzeichnissen oder von einer Tabelle zu einer anderen Datenbank erstellen können. (Symbolische Verknüpfungen zu anderen Festplatten hingegen sind unproblematisch.)

2.12.5. Anmerkungen zu anderen Unixen

2.12.5.1. Anmerkungen zu HP-UX Version 10.20

Wenn Sie MySQL unter HP-UX kompilieren, gibt es ein paar kleinere Probleme. Wir empfehlen die Verwendung von gcc anstelle des nativen Compilers von HP-UX, da gcc einen besseren Code erzeugt.

Verwenden Sie unter HP-UX am besten gcc 2.95. Verwenden Sie keine Hochoptimierungsflags (wie etwa -O6), da dies unter Umständen unter HP-UX nicht sicher ist.

Der folgende configure-Befehl sollte für gcc 2.95 funktionieren:

CFLAGS="-I/opt/dce/include -fpic" \
CXXFLAGS="-I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti" \
CXX=gcc \
./configure --with-pthread \
    --with-named-thread-libs='-ldce' \
    --prefix=/usr/local/mysql --disable-shared

Der folgende configure-Befehl sollte für gcc 3.1 funktionieren:

CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc \
CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors \
    -fno-exceptions -fno-rtti -O3 -fPIC" \
./configure --prefix=/usr/local/mysql \
    --with-extra-charsets=complex --enable-thread-safe-client \
    --enable-local-infile  --with-pthread \
    --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC
    --disable-shared

2.12.5.2. Anmerkungen zu HP-UX Version 11.x

Aufgrund einiger kritischer Bugs in den HP-UX-Standardbibliotheken sollten Sie die folgenden Patches installieren, bevor Sie MySQL unter HP-UX 11.0 ausführen:

PHKL_22840 Streams cumulative
PHNE_22397 ARPA cumulative

Hierdurch können Sie das Problem beheben, EWOULDBLOCK aus recv() und EBADF aus accept() in Thread-basierten Anwendungen zu erhalten.

Wenn Sie gcc 2.95.1 auf einem nicht gepatchten HP-UX 11.x-System einsetzen, wird unter Umständen die folgende Fehlermeldung angezeigt:

In file included from /usr/include/unistd.h:11,
                 from ../include/global.h:125,
                 from mysql_priv.h:15,
                 from item.cc:19:
/usr/include/sys/unistd.h:184: declaration of C function ...
/usr/include/sys/pthread.h:440: previous declaration ...
In file included from item.h:306,
                 from mysql_priv.h:158,
                 from item.cc:19:

Das Problem besteht darin, dass HP-UX pthreads_atfork() nicht konsistent definiert. Es liegt ein Prototypkonflikt in /usr/include/sys/unistd.h:184 und /usr/include/sys/pthread.h:440 vor.

Eine Lösung besteht darin, /usr/include/sys/unistd.h nach mysql/include zu kopieren und unistd.h so zu editieren, dass es zur Definition in pthread.h passt. Suchen Sie nach der folgenden Zeile:

extern int pthread_atfork(void (*prepare)(), void (*parent)(),
                                          void (*child)());

Ändern Sie sie wie folgt ab:

extern int pthread_atfork(void (*prepare)(void), void (*parent)(void),
                                          void (*child)(void));

Wenn Sie die Änderung vorgenommen haben, sollte die folgende configure-Zeile funktionieren:

CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \
./configure --prefix=/usr/local/mysql --disable-shared

Verwenden Sie den HP-UX-Compiler, dann können Sie den folgenden Befehl verwenden (dieser wurde mit cc B.11.11.04 getestet):

CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure \
    --with-extra-character-set=complex

Sie können alle Fehler des folgenden Typs ignorieren:

aCC: warning 901: unknown option: `-3': use +help for online
documentation

Wenn die folgende Fehlermeldung von configure ausgegeben wird, dann stellen Sie sicher, dass der Pfad zum K&R-Compiler nicht vor dem Pfad zum HP-UX-C- und C++-Compiler steht:

checking for cc option to accept ANSI C... no
configure: error: MySQL requires an ANSI C compiler (and a C++ compiler).
Try gcc. See the Installation chapter in the Reference Manual.

Ein anderer Grund dafür, dass eine Kompilierung nicht möglich ist, besteht darin, dass Sie die +DD64-Flags nicht wie eben beschrieben definiert haben.

Eine andere Möglichkeit für HP-UX 11 besteht darin, die unter http://dev.mysql.com/downloads/ verfügbaren MySQL-Binärdateien zu verwenden, die wir selbst erstellt und getestet haben. Ferner wurde uns mitgeteilt, dass die von MySQL angebotenen Binärdateien für HP-UX 10.20 auch unter HP-UX 11 erfolgreich ausgeführt werden können. Wenn Sie hierbei auf Probleme treffen, sollten Sie überprüfen, ob HP-UX-Patches verfügbar sind.

2.12.5.3. Anmerkungen zu IBM-AIX

Die automatische Erkennung von xlC fehlt bei Autoconf. Aus diesem Grund muss eine Reihe von Variablen eingestellt werden, bevor configure ausgeführt wird. Das folgende Beispiel verwendet den IBM-Compiler:

export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-I /usr/local/include"
export LDFLAGS="-L /usr/local/lib"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS

./configure --prefix=/usr/local \
                --localstatedir=/var/mysql \
                --sbindir='/usr/local/bin' \
                --libexecdir='/usr/local/bin' \
                --enable-thread-safe-client \
                --enable-large-files

Obige Optionen werden zur Kompilierung der MySQL-Distribution verwendet, die unter http://www-frec.bull.com/ verfügbar ist.

Wenn Sie in obiger configure-Zeile die Option -O3 auf -O2 setzen, müssen Sie auch die Option -qstrict entfernen. Dies ist eine Einschränkung des C-Compilers von IBM.

Wenn Sie gcc oder egcs zur Kompilierung von MySQL verwenden, müssen Sie das Flag -fno-exceptions benutzen, weil die Fehlerbehandlung in gcc/egcs nicht Thread-sicher ist! (Dies wurde mit egcs 1.1 getestet.) Es gibt ferner einige bekannte Probleme mit dem IBM-Assembler, die in Verbindung mit gcc zu fehlerhaftem Code führen können.

Wir empfehlen die folgende configure-Zeile bei egcs und gcc 2.95 unter AIX:

CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory

Die Option -Wa,-many ist erforderlich, damit die Kompilierung erfolgreich verläuft. Bei IBM ist dieses Problem bekannt, man sieht sich aber mit der Behebung nicht unter Zeitdruck, da ein Workaround verfügbar ist. Wir wissen nicht, ob -fno-exceptions bei gcc 2.95 erforderlich ist, aber weil MySQL keine Ausnahmen verwendet und die Option einen schnelleren Code erzeugt, empfehlen wir ihre generelle Verwendung bei egcs und gcc.

Wenn ein Problem mit dem Assemblercode auftritt, versuchen Sie die Option -mcpu=xxx so zu ändern, dass sie zu Ihrer CPU passt. Normalerweise müssen power2, power oder powerpc verwendet werden. Möglicherweise müssen Sie aber auch 604 oder 604e einsetzen. Wir wissen es nicht genau, nehmen aber an, dass power mit hoher Wahrscheinlichkeit in den meisten Fällen sicher ist (und zwar auch auf power2-Systemen).

Wenn Sie nicht wissen, welchen Prozessor Sie haben, führen Sie den Befehl uname -m aus. Er erzeugt einen String, der etwa so aussieht: 000514676700. Das Format ist xxyyyyyymmss, wobei xx und ss immer 00, yyyyyy eine eindeutige Systemkennung und mm die Kennung des CPU-Planars sind. Eine Übersicht über diese Werte finden Sie unter http://www16.boulder.ibm.com/pseries/en_US/cmds/aixcmds5/uname.htm.

Dort erhalten Sie Angaben zu Rechnertyp und -modell, auf deren Basis Sie die CPU in Ihrem Rechner ermitteln können.

Wenn Sie Probleme mit Signalen haben (weil sich MySQL unter hoher Belastung unerwartet aufhängt), haben Sie unter Umständen einen Betriebssystembug bei den Threads oder Signalen gefunden. In diesem Fall können Sie MySQL wie folgt anweisen, Signale nicht zu verwenden:

CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
-DDONT_USE_THR_ALARM" \
./configure --prefix=/usr/local/mysql --with-debug \
    --with-low-memory

Hierdurch wird die Leistungsfähigkeit von MySQL nicht beeinträchtigt; ein Nebeneffekt besteht aber darin, dass Sie Clients, die an einer Verbindung „schlafen“, mit mysqladmin kill oder mysqladmin shutdown nicht terminieren können. Stattdessen hängt sich der Client auf, wenn er den nächsten Befehl absetzt.

Bei einigen Versionen von AIX führt eine Verknüpfung mit libbind.a bei getservbyname() zu einem Speicherauszug. Dies ist ein AIX-Bug, der IBM gemeldet werden sollte.

Bei AIX 4.2.1 und gcc müssen Sie die folgenden Änderungen vornehmen.

Bearbeiten Sie nach der Konfiguration config.h und include/my_config.h. Die Zeile

#define HAVE_SNPRINTF 1

ändern Sie wie folgt:

#undef HAVE_SNPRINTF

Schließlich müssen Sie in mysqld.cc noch einen Prototyp für initgroups() hinzufügen.

#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif

Wenn Sie dem Prozess mysqld viel Speicher zuweisen müssen, reicht es nicht aus, einfach ulimit -d unlimited zu verwenden. Sie müssen vielmehr auch mysqld_safe mit einer Zeile wie der folgenden ergänzen:

export LDR_CNTRL='MAXDATA=0x80000000'

Weitere Informationen zur Verwendung einer großen Menge Speicher finden Sie unter http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm.

Benutzer von AIX 4.3 sollten gmake statt des in AIX enthaltenen make-Hilfsprogramms verwenden.

2.12.5.4. Anmerkungen zu SunOS 4

Unter SunOS 4 ist MIT-pthreads zur Kompilierung von MySQL erforderlich. Das wiederum bedeutet, dass Sie GNU make benötigen.

Einige SunOS 4-Systeme haben Probleme mit dynamischen Bibliotheken und libtool. Dieses Problem können Sie mit der folgenden configure-Zeile beheben:

./configure --disable-shared --with-mysqld-ldflags=-all-static

Wenn Sie readline kompilieren, erhalten Sie unter Umständen Warnungen zu Doppeldefinitionen. Diese können Sie getrost ignorieren.

Wenn Sie mysqld kompilieren, erscheinen einige Warnungen des Typs implicit declaration of function. Diese können Sie getrost ignorieren.

2.12.5.5. Anmerkungen zu Alpha-DEC-UNIX (Tru64)

Wenn Sie egcs 1.1.2 unter Digital Unix verwenden, sollten Sie auf gcc 2.95.2 aktualisieren, weil egcs unter DEC einige schwerwiegende Bugs aufweist!

Wenn Sie Thread-basierte Programme unter Digital Unix kompilieren, empfiehlt die Dokumentation die Verwendung der Option -pthread für cc und cxx und die -lmach -lexc-Bibliotheken (zusätzlich zu -lpthread). Sie sollten configure etwa wie folgt ausführen:

CC="cc -pthread" CXX="cxx -pthread -O" \
./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"

Wenn Sie mysqld kompilieren, werden unter Umständen einige Warnungen wie die folgenden angezeigt:

mysqld.cc: In function void handle_connections()':
mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'

Diese können Sie getrost ignorieren. Sie erscheinen, weil configure nur Fehler, nicht jedoch Warnungen erkennen kann.

Wenn Sie den Server direkt über die Befehlszeile starten, kann es bei der Abmeldung zu Abstürzen kommen. (Wenn Sie sich abmelden, erhalten Ihre ausstehenden Prozesse ein SIGHUP-Signal.) Versuchen Sie, den Server wie folgt zu starten:

nohup mysqld [options] &

nohup sorgt dafür, dass der Befehl, der darauf folgt, alle ggf. vom Terminal gesendeten SIGHUP-Signale ignoriert. Alternativ starten Sie den Server durch Ausführung von mysqld_safe. Hierdurch wird mysqld unter Verwendung von nohup für Sie aufgerufen. Siehe auch Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“.

Wenn ein Problem bei der Kompilierung von mysys/get_opt.c auftritt, entfernen Sie einfach die Zeile #define _NO_PROTO am Anfang dieser Datei.

Wenn Sie den CC-Compiler von Compaq einsetzen, sollte die folgende configure-Zeile problemlos funktionieren:

CC="cc -pthread"
CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host"
CXX="cxx -pthread"
CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all \
    -arch host -noexceptions -nortti"
export CC CFLAGS CXX CXXFLAGS
./configure \
    --prefix=/usr/local/mysql \
    --with-low-memory \
    --enable-large-files \
    --enable-shared=yes \
    --with-named-thread-libs="-lpthread -lmach -lexc -lc"
gnumake

Tritt ein Problem mit libtool auf, wenn Sie wie gerade gezeigt mit gemeinsamen Bibliotheken kompilieren und mysql verknüpfen, sollten Sie dieses durch Absetzen der folgenden Befehle umgehen können:

cd mysql
/bin/sh ../libtool --mode=link cxx -pthread  -O3 -DDBUG_OFF \
    -O4 -ansi_alias -ansi_args -fast -inline speed \
    -speculate all \ -arch host  -DUNDEF_HAVE_GETHOSTBYNAME_R \
    -o mysql  mysql.o readline.o sql_string.o completion_hash.o \
    ../readline/libreadline.a -lcurses \
    ../libmysql/.libs/libmysqlclient.so  -lm
cd ..
gnumake
gnumake install
scripts/mysql_install_db

2.12.5.6. Anmerkungen zu Alpha-DEC-OSF1

Wenn Sie Probleme beim Kompilieren haben und DEC CC und gcc installiert sind, probieren Sie einmal, configure wie folgt auszuführen:

CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

Treten Probleme in Verbindung mit der Datei c_asm.h auf, dann können Sie wie folgt eine Dummyversion von c_asm.h erstellen:

touch include/c_asm.h
CC=gcc CFLAGS=-I./include \
CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

Beachten Sie, dass die folgenden Probleme beim Programm ld sich durch den Download des aktuellen DEC-(Compaq-)Patch-Kits beheben lassen. Dieses finden Sie unter http://ftp.support.compaq.com/public/unix/.

Unter OSF/1 V4.0D tritt bei Verwendung des Compilers "DEC C V5.6-071 on Digital Unix V4.0 (Rev. 878)" ein seltsames Verhalten auf (undefinierte asm-Symbole). /bin/ld scheint ebenfalls beschädigt zu sein (Probleme mit _exit undefined-Fehlern, die beim Verknüpfen von mysqld auftreten). Es ist uns gelungen, MySQL auf diesem System mit der folgenden configure-Zeile zu kompilieren, nachdem wir /bin/ld durch die Version aus OSF 4.0C ersetzt haben:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql

Beim Digital-Compiler "C++ V6.1-029" sollte Folgendes funktionieren:

CC=cc -pthread
CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \
       -speculate all -arch host
CXX=cxx -pthread
CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \
         -speculate all -arch host -noexceptions -nortti
export CC CFLAGS CXX CXXFLAGS
./configure --prefix=/usr/mysql/mysql \
            --with-mysqld-ldflags=-all-static --disable-shared \
            --with-named-thread-libs="-lmach -lexc -lc"

Bei einigen Versionen von OSF/1 ist die Funktion alloca() beschädigt. Dieses Problem können Sie beheben, indem Sie die Zeile in config.h entfernen, die 'HAVE_ALLOCA' definiert.

Die Funktion alloca() weist unter Umständen auch einen falschen Prototyp in /usr/include/alloca.h auf. Sich hierauf beziehende Warnmeldungen können Sie ignorieren.

configure verwendet die folgenden Thread-Bibliotheken automatisch: --with-named-thread-libs="-lpthread -lmach -lexc -lc".

Wenn Sie gcc verwenden, können Sie auch versuchen, configure wie folgt auszuführen:

CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ...

Wenn Sie Probleme mit Signalen haben (weil sich MySQL unter hoher Belastung unerwartet aufhängt), haben Sie unter Umständen einen Betriebssystembug bei den Threads oder Signalen gefunden. In diesem Fall können Sie MySQL wie folgt anweisen, Signale nicht zu verwenden:

CFLAGS=-DDONT_USE_THR_ALARM \
CXXFLAGS=-DDONT_USE_THR_ALARM \
./configure ...

Hierdurch wird die Leistungsfähigkeit von MySQL nicht beeinträchtigt; ein Nebeneffekt besteht aber darin, dass Sie Clients, die an einer Verbindung „schlafen“, mit mysqladmin kill oder mysqladmin shutdown nicht terminieren können. Stattdessen hängt sich der Client auf, wenn er den nächsten Befehl absetzt.

Bei gcc 2.95.2 erhalten Sie möglicherweise den folgenden Kompilierungsfehler:

sql_acl.cc:1456: Internal compiler error in `scan_region',
at except.c:2566
Please submit a full bug report.

Um dies zu beheben, sollten Sie in das Verzeichnis sql wechseln und dort die letzte gcc-Zeile ausschneiden und einfügen, die Option -O3 dabei jedoch zu -O0 ändern (oder -O0 direkt nach gcc hinzufügen, wenn Ihre compile-Zeile gar keine -O-Option enthält). Danach können Sie wieder zum obersten Verzeichnis wechseln und make erneut ausführen.

2.12.5.7. Anmerkungen zu SGI Irix

Wenn Sie Irix 6.5.3 oder höher verwenden, kann mysqld Threads nur dann erstellen, wenn Sie es als Benutzer mit CAP_SCHED_MGT-Berechtigungen (z. B. als root) ausführen oder dem Server mysqld diese Berechtigung mit dem folgenden Shell-Befehl zuweisen:

chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld

Unter Umständen müssen Sie die Definitionen einiger Symbole in config.h nach der Ausführung von configure, aber vor der Kompilierung aufheben.

Bei einigen Irix-Implementierungen ist die Funktion alloca() beschädigt. Wenn der mysqld-Server sich bei einigen SELECT-Anweisungen aufhängt, entfernen Sie die Zeilen aus config.h, die HAVE_ALLOC und HAVE_ALLOCA_H definieren. Funktioniert mysqladmin create nicht, dann entfernen Sie die Zeile aus config.h, die HAVE_READDIR_R definiert. Möglicherweise müssen Sie auch die Zeile HAVE_TERM_H entfernen.

SGI empfiehlt, alle Patches auf der folgenden Seite auf einmal zu installieren: http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html.

Sie sollten zumindest das jeweils letzte Kernel-, rld- und libc-Rollup installieren.

Für die pthreads-Unterstützung benötigen Sie in jedem Fall alle POSIX-Patches auf der folgenden Seite:

http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html

Möglicherweise erhalten Sie bei der Kompilierung von mysql.cc eine Fehlermeldung ähnlich der folgenden:

"/usr/include/curses.h", line 82: error(1084):
invalid combination of type

Geben Sie in diesem Fall Folgendes im obersten Verzeichnis Ihres MySQL-Source-Trees ein:

extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h
make

Gemeldet wurden ferner Zeitplanungsprobleme. Wird nur ein Thread ausgeführt, dann ist die Performance schwach. Dies können Sie vermeiden, indem Sie einen anderen Client starten. Dies hat unter Umständen eine zwei- bis zehnfache Steigerung der Ausführungsgeschwindigkeit für den anderen Thread zur Folge. Dieses Problem mit Irix-Threads ist schlecht nachvollziehbar: Bis es behoben ist, müssen Sie wohl improvisieren, um geeignete Lösungen zu finden.

Wenn Sie mit gcc kompilieren, können Sie den folgenden configure-Befehl verwenden:

CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
    --with-named-thread-libs=-lpthread

Unter Irix 6.5.11 mit nativen Irix-C- und -C++-Compilern der Version 7.3.1.2 funktioniert Angaben zufolge auch Folgendes:

CC=cc CXX=CC CFLAGS='-O3 -n32 -TARG:platform=IP22 -I/usr/local/include \
-L/usr/local/lib' CXXFLAGS='-O3 -n32 -TARG:platform=IP22 \
-I/usr/local/include -L/usr/local/lib' \
./configure --prefix=/usr/local/mysql --with-innodb --with-berkeley-db \
    --with-libwrap=/usr/local \
    --with-named-curses-libs=/usr/local/lib/libncurses.a

2.12.5.8. Anmerkungen zu SCO UNIX und OpenServer 5.0.x

Die aktuelle Portierung wird nur auf Systemen unter sco3.2v5.0.5, sco3.2v5.0.6 und sco3.2v5.0.7 getestet. Die Portierung auf sco3.2v4.2 ist ebenfalls weit fortgeschritten. Open Server 5.0.8 (Legend) bietet native Threads und unterstützt Dateien, die größer sind als 2 Gbyte. Das aktuelle Limit bei der Dateigröße liegt bei 2 Gbyte.

Wir konnten MySQL mit dem folgenden configure-Befehl unter OpenServer mit gcc 2.95.3 kompilieren.

CC=gcc CXX=gcc ./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client --with-innodb \
    --with-openssl --with-vio --with-extra-charsets=complex

gcc erhalten Sie unter ftp://ftp.sco.com/pub/openserver5/opensrc/gnutools-5.0.7Kj.

Dieses Entwicklungssystem erfordert das OpenServer Execution Environment Supplement oss646B unter OpenServer 5.0.6 und oss656B und die in gwxlibs enthaltenen OpenSource-Bibliotheken. Alle OpenSource-Tools befinden sich im Verzeichnis opensrc. Sie finden sie unter ftp://ftp.sco.com/pub/openserver5/opensrc/.

Wir empfehlen die Verwendung des aktuellen Produktions-Releases von MySQL.

SCO stellt Betriebssystem-Patches unter ftp://ftp.sco.com/pub/openserver5 für OpenServer 5.0.[0-6] und unter ftp://ftp.sco.com/pub/openserverv5/507 für OpenServer 5.0.7 bereit.

Informationen zu behobenen Sicherheitslücken bietet SCO unter ftp://ftp.sco.com/pub/security/OpenServer für OpenServer 5.0.x an.

Die maximale Dateigröße auf einem OpenServer 5.0.x-System beträgt 2 Gbyte.

Die Gesamtmenge an Speicher, der für Stream-Puffer, CLISTs und Sperrdatensätze zugewiesen wird, darf unter OpenServer 5.0.x einen Wert von 60 Mbyte nicht überschreiten.

Stream-Puffer werden in Einheiten von 4096 Byte großen Seiten zugewiesen, CLISTs haben jeweils 70 Byte, und Sperrdatensätze sind je 64 Byte groß. Hieraus ergibt sich:

(NSTRPAGES * 4096) + (NCLIST * 70) + (MAX_FLCKREC * 64) <= 62914560

Gehen Sie wie folgt vor, um die Option Database Services zu konfigurieren. Wenn Sie nicht genau wissen, ob eine Anwendung dies erfordert, schlagen Sie in der Dokumentation dieser Anwendung nach.

  1. Melden Sie sich als root an.

  2. Aktivieren Sie den SUDS-Treiber, indem Sie die Datei /etc/conf/sdevice.d/suds bearbeiten. Ändern Sie das N im zweiten Feld zu Y.

  3. Aktivieren Sie mithilfe von mkdev aio oder des Hardware/Kernel-Managers die Unterstützung für asynchrone Eingabe/Ausgabe und verknüpfen Sie den Kernel neu. Damit Benutzer Speicher für die Verwendung mit diesem E/A-Typ verriegeln können, aktualisieren Sie die Datei aiomemlock(F). Diese Datei sollte mit den Namen der Benutzer, die AIO verwenden dürfen, und der maximalen Speichermenge aktualisiert werden, die diese Benutzer sperren dürfen.

  4. Viele Anwendungen verwenden setuid-Binärdateien, d. h., Sie müssen nur einen Benutzer angeben. Konsultieren Sie die Dokumentation zur fraglichen Anwendung, um zu ermitteln, ob dies bei dieser Anwendung der Fall ist.

Nachdem Sie den Vorgang abgeschlossen haben, starten Sie das System neu, um einen neuen Kernel zu erstellen, der diese Änderungen beinhaltet.

Standardmäßig haben die Einträge in /etc/conf/cf.d/mtune folgende Einstellungen:

Value           Default         Min             Max
-----           -------         ---             ---
NBUF            0               24              450000
NHBUF           0               32              524288
NMPBUF          0               12              512
MAX_INODE       0               100             64000
MAX_FILE        0               100             64000
CTBUFSIZE       128             0               256
MAX_PROC        0               50              16000
MAX_REGION      0               500             160000
NCLIST          170             120             16640
MAXUP           100             15              16000
NOFILES         110             60              11000
NHINODE         128             64              8192
NAUTOUP         10              0               60
NGROUPS         8               0               128
BDFLUSHR        30              1               300
MAX_FLCKREC     0               50              16000
PUTBUFSZ        8000            2000            20000
MAXSLICE        100             25              100
ULIMIT          4194303         2048            4194303
* Streams Parameters
NSTREAM         64              1               32768
NSTRPUSH        9               9               9
NMUXLINK        192             1               4096
STRMSGSZ        16384           4096            524288
STRCTLSZ        1024            1024            1024
STRMAXBLK       524288          4096            524288
NSTRPAGES       500             0               8000
STRSPLITFRAC    80              50              100
NLOG            3               3               3
NUMSP           64              1               256
NUMTIM          16              1               8192
NUMTRW          16              1               8192
* Semaphore Parameters
SEMMAP          10              10              8192
SEMMNI          10              10              8192
SEMMNS          60              60              8192
SEMMNU          30              10              8192
SEMMSL          25              25              150
SEMOPM          10              10              1024
SEMUME          10              10              25
SEMVMX          32767           32767           32767
SEMAEM          16384           16384           16384
* Shared Memory Parameters
SHMMAX          524288          131072          2147483647
SHMMIN          1               1               1
SHMMNI          100             100             2000
FILE            0               100             64000
NMOUNT          0               4               256
NPROC           0               50              16000
NREGION         0               500             160000

Wir empfehlen die Einstellung folgender Werte:

NOFILES sollte 4096 oder 2048 sein.

MAXUP sollte 2048 sein.

Um Änderungen am Kernel vorzunehmen, wechseln Sie in das Verzeichnis /etc/conf/bin und nehmen die erforderlichen Änderungen mit ./idtune name parameter vor. Um beispielsweise SEMMS auf 200 zu setzen, führen Sie folgende Befehle als root aus:

# cd /etc/conf/bin
# ./idtune SEMMNS 200

Wir empfehlen eine Optimierung des Systems. Welche Parameterwerte allerdings hierzu geeignet sind, hängt von der Anzahl der Benutzer, die auf die Anwendung oder Datenbank zugreifen, und von der Größe der Datenbank selbst (d. h. dem verwendeten Pufferpool) ab. Das Folgende betrifft die Kernel-Parameter, die in /etc/conf/cf.d/stune definiert sind:

SHMMAX (Einstellempfehlung: 128 Mbyte) und SHMSEG (Einstellempfehlung: 15). Diese Parameter beeinflussen die MySQL-Datenbank-Engine bei der Erstellung der Benutzerpufferpools.

NOFILES und MAXUP sollten auf mindestens 2048 gesetzt werden.

MAXPROC sollte (abhängig von der Anzahl der Benutzer) auf mindestens 3000/4000 gesetzt werden.

Ferner wird die Verwendung der folgenden Formel zur Berechnung der Werte für SEMMSL, SEMMNS und SEMMNU empfohlen:

SEMMSL = 13

13 hat sich als optimaler Wert sowohl für Progress als auch für MySQL erwiesen.

SEMMNS = SEMMSL × Anzahl der auf dem System ausgeführten Server

Setzen Sie SEMMNS auf den Wert von SEMMSL multipliziert mit der maximalen Anzahl der Datenbankserver, die gleichzeitig auf Ihrem System ausgeführt werden.

SEMMNU = SEMMNS

SEMMNU setzen Sie dann auf den gleichen Wert wie SEMMNS. Wahrscheinlich würde hier auch ein Wert von 75 Prozent von SEMMNS ausreichen, aber dies ist eine konservative Schätzung.

Sie müssen zumindest die "SCO OpenServer Linker and Application Development Libraries" oder das OpenServer Development System installieren, um gcc verwenden zu können. Das GCC Dev-System können Sie nicht nutzen, ohne mindestens eine dieser Komponenten zu installieren.

Zunächst sollten Sie sich jedoch das FSU-Pthreads-Paket beschaffen und es installieren. Sie finden es unter http://moss.csc.ncsu.edu/~mueller/ftp/pub/PART/pthreads.tar.gz. Eine vorkompilierte Fassung finden Sie unter ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads-3.14.tar.gz.

FSU-Pthreads kann mit SCO Unix 4.2 mit tcpip oder aber mithilfe von OpenServer 3.0 oder Open Desktop 3.0 (OS 3.0 ODT 3.0) mit installiertem SCO Development System kompiliert werden, wobei eine gute Portierung von GCC 2.5.x zum Einsatz kommen sollte. Für ODT oder OS 3.0 benötigen Sie eine gute Portierung von GCC 2.5.x. Ohne eine solche gute Portierung können eine Menge Probleme entstehen. Die Portierung für dieses Produkt erfordert das SCO Unix Development-System. Ohne dieses fehlen Ihnen die Bibliotheken und der erforderliche Linker. Ferner benötigen Sie SCO-3.2v4.2-includes.tar.gz. Diese Datei enthält die Änderungen an den Include-Dateien des SCO Development Systems, die für die Erstellung von MySQL benötigt werden. Sie müssen die vorhandenen System-Include-Dateien durch diese modifizierten Header-Dateien ersetzen. Sie erhalten sie unter ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz.

Um FSU-Pthreads auf Ihrem System zu erstellen, sollten Sie nichts weiteres tun müssen, als GNU make auszuführen. Das Makefile in FSU-threads-3.14.tar.gz ist so konfiguriert, dass es FSU-threads erstellt.

Sie können ./configure im Verzeichnis threads/src ausführen und die Option SCO OpenServer auswählen. Dieser Befehl kopiert Makefile.SCO5 nach Makefile. Danach führen Sie make aus.

Zur Installation in das Standardverzeichnis /usr/include melden Sie sich als root und wechseln dann in das Verzeichnis thread/src. Dort führen Sie make install aus.

Denken Sie daran, GNU make zur Erstellung von MySQL zu verwenden.

Hinweis: Wenn Sie mysqld_safe nicht als root starten, erhalten Sie nur die standardmäßig vorgesehenen 110 offenen Dateien pro Prozess. mysqld schreibt eine entsprechende Anmerkung in die Logdatei.

Bei SCO 3.2V4.2 sollten Sie FSU-Pthreads Version 3.14 oder höher verwenden. Der folgende configure-Befehl sollte funktionieren:

CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
./configure \
    --prefix=/usr/local/mysql \
    --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
    --with-named-curses-libs="-lcurses"

Unter Umständen treten Probleme mit einigen Include-Dateien auf. In diesem Fall finden Sie neue SCO-spezifische Include-Dateien unter ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz.

Sie sollten diese Datei in das Verzeichnis include Ihres MySQL-Source-Trees entpacken.

Anmerkungen zur SCO-Entwicklung:

  • MySQL sollte FSU-Pthreads automatisch erkennen und mysqld mit -lgthreads -lsocket -lgthreads verknüpfen.

  • Die SCO-Entwicklungsbibliotheken sind in FSU-Pthreads mehrfach aufrufbar. SCO behauptet, dass seine Bibliothek mehrfach aufrufbar ist, mithin muss sie also auch bei FSU-Pthreads mehrfach aufrufbar sein. FSU-Pthreads unter OpenServer versucht, mithilfe des SCO-Schemas mehrfach aufrufbare Bibliotheken zu erstellen.

  • FSU-Pthreads wird mit GNU malloc verknüpft ausgeliefert (zumindest gilt dies für die Version unter ftp::/ftp.zenez.com). Wenn Probleme mit der Speichernutzung auftreten, vergewissern Sie sich, dass gmalloc.o in libgthreads.a und libgthreads.so enthalten ist.

  • In FSU-Pthreads erkennen die folgenden Systemaufrufe das Vorhandensein von pthreads: read(), write(), getmsg(), connect(), accept(), select() und wait().

  • Der Patch CSSA-2001-SCO.35.2, der üblicherweise als Sicherheits-Patch erg711905-dscr_remap (version 2.0.0) gelistet ist, beschädigt FSU-Threads und macht mysqld instabil. Wenn Sie mysqld auf einem System unter OpenServer 5.0.6 verwenden wollen, müssen Sie diesen Patch entfernen.

  • Setzen Sie SCO OpenServer 5 ein, dann müssen Sie unter Umständen FSU-Pthreads mit -DDRAFT7 in CFLAGS neu kompilieren. Andernfalls hängt sich InnoDB beim Start von mysqld auf.

  • SCO bietet Betriebssystem-Patches unter ftp://ftp.sco.com/pub/openserver5 für OpenServer 5.0.x.

  • Fehlerbehebungen für Sicherheitslücken und libsocket.so.2 bietet SCO unter ftp://ftp.sco.com/pub/security/OpenServer und ftp://ftp.sco.com/pub/security/sse für OpenServer 5.0.x an.

  • Sicherheitsrelevante Fehlerbehebungen für OpenServer vor OSR506 und den Bugfix für telnetd finden Sie unter ftp://stage.caldera.com/pub/security/openserver/ oder ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/ als libsocket.so.2 und libresolv.so.1 mit Anweisungen zur Installation auf Systemen vor OSR506.

    Es empfiehlt sich wohl, diese Patches vor der Kompilierung und Verwendung von MySQL zu installieren.

Ab Legend/OpenServer 6.0.0 gibt es native Threads, und die Beschränkung der Dateigröße auf 2 Gbyte entfällt.

2.12.5.9. Anmerkungen zu SCO OpenServer 6.0.x

OpenServer 6 enthält die folgenden wesentlichen Verbesserungen:

  • Unterstützung für Dateien bis zu 1 Tbyte

  • Multiprozessorunterstützung für bis zu 32 Prozessoren

  • verbesserte Speicherunterstützung für bis zu 64 Gbyte

  • Leistungserweiterung von UnixWare auf OpenServer 6

  • drastische Leistungssteigerungen

OpenServer 6.0.0-Befehle sind wie folgt organisiert:

  • /bin ist für Befehle vorgesehen, die sich exakt so verhalten wie unter OpenServer 5.0.x.

  • /u95/bin ist für Befehle vorgesehen, die eine erhöhte Standardkonformität aufweisen. Hierzu gehört z. B. die LFS-Unterstützung (Large File System).

  • /udk/bin ist für Befehle vorgesehen, die sich exakt so verhalten wie unter UnixWare 7.1.4. Standardmäßig wird LFS unterstützt.

Nachfolgend erhalten Sie eine Anleitung zur Einstellung von PATH unter OpenServer 6. Wenn der Benutzer das traditionelle Verhalten von OpenServer 5.0.x wünscht, sollte PATH zunächst /bin sein. Wünscht der Benutzer LFS-Unterstützung, dann sollte der Pfad /u95/bin:/bin sein. Benötigt der Benutzer zunächst UnixWare 7-Unterstützung, dann wäre der korrekte Pfad /udk/bin:/u95/bin:/bin:.

Wir empfehlen die Verwendung des aktuellen Produktions-Releases von MySQL.

Wir konnten MySQL mit dem folgenden configure-Befehl unter OpenServer 6.0.x kompilieren.

CC="cc" CFLAGS="-I/usr/local/include" \
CXX="CC" CXXFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client --with-berkeley-db=./bdb \
    --with-innodb --with-openssl --with-extra-charsets=complex \
    --enable-readline

Wenn Sie gcc verwenden wollen, müssen Sie gcc 2.95.3 oder höher einsetzen.

CC=gcc CXX=g++ ./configure --prefix=/usr/local/mysql

Die Version von Berkeley DB, die Bestandteil von UnixWare 7.1.4 wie auch von OpenServer 6.0.0 ist, wird bei der Erstellung von MySQL nicht eingesetzt. Stattdessen verwendet MySQL seine eigene Version von Berkeley DB. Der Befehl configure muss sowohl eine statische als auch eine dynamische Bibliothek in src_directory/bdb/build_unix/ erstellen, aber dies nicht mit MySQLs eigener BDB-Version. Der Workaround sieht wie folgt aus:

  1. Führen Sie die normalen für MySQL erforderlichen Konfigurationsarbeiten durch.

  2. cd bdb/build_unix/

  3. cp -p Makefile to Makefile.sav

  4. Führen Sie unter Verwendung derselben Optionen ../dist/configure aus.

  5. Führen Sie gmake aus.

  6. cp -p Makefile.sav Makefile

  7. Wechseln Sie in das oberste Quellverzeichnis und führen Sie gmake aus.

Auf diese Weise lassen sich sowohl die statischen als auch die dynamischen Bibliotheken erstellen und zum Laufen bringen. OpenServer 6.0.0 erfordert auch, dass Patches für den MySQL-Source-Tree und der Patch für config.guess auf bdb/dist/config.guess angewendet werden. Sie können die Patches unter ftp://ftp.zenez.com/pub/zenez/prgms/mysql-4.1.12-osr6-patches.tar.gz bzw. ftp://ftp.zenez.com/pub/zenez/prgms/mysql-4.x.x-osr6-patches herunterladen. Lesen Sie die beigefügte Datei README, um Hilfe zu erhalten.

SCO stellt Betriebssystem-Patches für OpenServer 6 unter ftp://ftp.sco.com/pub/openserver6 bereit.

Informationen zu behobenen Sicherheitslücken bietet SCO unter ftp://ftp.sco.com/pub/security/OpenServer.

Standardmäßig beträgt die maximale Dateigröße auf einem OpenServer 6.0.0-System 1 Tbyte. Einige Betriebssystem-Hilfsprogramme weisen eine Beschränkung auf 2 Gbyte auf. Die maximale Dateigröße unter UnixWare 7 beträgt 1 Tbyte mit VXFS oder HTFS.

Standardmäßig haben die Einträge in /etc/conf/cf.d/mtune folgende Einstellungen:

Value           Default         Min             Max
-----           -------         ---             ---
SVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
HVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
SSTKLIM         0x1000000       0x2000          0x7FFFFFFF
HSTKLIM         0x1000000       0x2000          0x7FFFFFFF

Wir empfehlen die Einstellung folgender Werte:

SDATLIM 0x7FFFFFFF
HDATLIM 0x7FFFFFFF
SSTKLIM 0x7FFFFFFF
HSTKLIM 0x7FFFFFFF
SVMMLIM 0x7FFFFFFF
HVMMLIM 0x7FFFFFFF
SFNOLIM 2048
HFNOLIM 2048

Wir empfehlen eine Optimierung des Systems. Welche Parameterwerte allerdings hierzu geeignet sind, hängt von der Anzahl der Benutzer, die auf die Anwendung oder Datenbank zugreifen, und von der Größe der Datenbank selbst (d. h. dem verwendeten Pufferpool) ab. Das Folgende betrifft die Kernel-Parameter, die in /etc/conf/cf.d/stune definiert sind:

SHMMAX (Einstellempfehlung: 128 Mbyte) und SHMSEG (Einstellempfehlung: 15). Diese Parameter beeinflussen die MySQL-Datenbank-Engine bei der Erstellung der Benutzerpufferpools.

SFNOLIM und HFNOLIM sollten auf maximal 2048 gesetzt werden.

NPROC sollte (abhängig von der Anzahl der Benutzer) auf mindestens 3000/4000 gesetzt werden.

Ferner wird die Verwendung der folgenden Formel zur Berechnung der Werte für SEMMSL, SEMMNS und SEMMNU empfohlen:

SEMMSL = 13

13 hat sich als optimaler Wert sowohl für Progress als auch für MySQL erwiesen.

SEMMNS = SEMMSL × Anzahl der auf dem System ausgeführten Server

Setzen Sie SEMMNS auf den Wert von SEMMSL multipliziert mit der maximalen Anzahl der Datenbankserver, die gleichzeitig auf Ihrem System ausgeführt werden.

SEMMNU = SEMMNS

SEMMNU setzen Sie dann auf den gleichen Wert wie SEMMNS. Wahrscheinlich würde hier auch ein Wert von 75 Prozent von SEMMNS ausreichen, aber dies ist eine konservative Schätzung.

2.12.5.10. Anmerkungen zu SCO UnixWare 7.1.x und OpenUNIX 8.0.0

Wir empfehlen die Verwendung des aktuellen Produktions-Releases von MySQL.

Wir konnten MySQL mit dem folgenden configure-Befehl unter UnixWare 7.1.x kompilieren.

CC="cc" CFLAGS="-I/usr/local/include" \
CXX="CC" CXXFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client --with-berkeley-db=./bdb \
    --with-innodb --with-openssl --with-extra-charsets=complex

Wenn Sie gcc verwenden wollen, müssen Sie gcc 2.95.3 oder höher einsetzen.

CC=gcc CXX=g++ ./configure --prefix=/usr/local/mysql

Die Version von Berkeley DB, die Bestandteil von UnixWare 7.1.4 wie auch von OpenServer 6.0.0 ist, wird bei der Erstellung von MySQL nicht eingesetzt. Stattdessen verwendet MySQL seine eigene Version von Berkeley DB. Der Befehl configure muss sowohl eine statische als auch eine dynamische Bibliothek in src_directory/bdb/build_unix/ erstellen, aber dies nicht mit MySQLs eigener BDB-Version. Der Workaround sieht wie folgt aus:

  1. Führen Sie die normalen für MySQL erforderlichen Konfigurationsarbeiten durch.

  2. cd bdb/build_unix/

  3. cp -p Makefile to Makefile.sav

  4. Führen Sie unter Verwendung derselben Optionen ../dist/configure aus.

  5. Führen Sie gmake aus.

  6. cp -p Makefile.sav Makefile

  7. Wechseln Sie in das oberste Quellverzeichnis und führen Sie gmake aus.

Auf diese Weise lassen sich sowohl die statischen als auch die dynamischen Bibliotheken erstellen und zum Laufen bringen.

SCO bietet Betriebssystem-Patches unter ftp://ftp.sco.com/pub/unixware7 für UnixWare 7.1.1, unter ftp://ftp.sco.com/pub/unixware7/713/ für UnixWare 7.1.3, unter ftp://ftp.sco.com/pub/unixware7/714/ für UnixWare 7.1.4 und unter ftp://ftp.sco.com/pub/openunix8 für OpenUNIX 8.0.0 an.

Informationen zu behobenen Sicherheitslücken bietet SCO unter ftp://ftp.sco.com/pub/security/OpenUNIX für OpenUNIX und unter ftp://ftp.sco.com/pub/security/UnixWare für UnixWare an.

Standardmäßig beträgt die maximale Dateigröße auf einem UnixWare 7.1.1-System 1 Gbyte, bei UnixWare 7.1.4 ist die Größe hingegen auf 1 Tbyte mit VXFS beschränkt. Einige Betriebssystem-Hilfsprogramme weisen eine Beschränkung auf 2 Gbyte auf. Die maximal mögliche Dateigröße unter UnixWare 7 beträgt 1 Tbyte mit VXFS.

Unter UnixWare 7.1.4 müssen Sie nichts tun, um in den Genuss der Unterstützung großer Dateien zu kommen. Bei Versionen vor UnixWare 7.1.x müssen Sie zu diesem Zweck fsadm ausführen.

# fsadm -Fvxfs -o largefiles /
# fsadm /         * Note
# ulimit unlimited
# cd /etc/conf/bin
# ./idtune SFSZLIM 0x7FFFFFFF     ** Note
# ./idtune HFSZLIM 0x7FFFFFFF     ** Note
# ./idbuild -B

* This should report "largefiles".
** 0x7FFFFFFF represents infinity for these values.

Starten Sie das System mit shutdown neu.

Standardmäßig haben die Einträge in /etc/conf/cf.d/mtune folgende Einstellungen:

Value           Default         Min             Max
-----           -------         ---             ---
SVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
HVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
SSTKLIM         0x1000000       0x2000          0x7FFFFFFF
HSTKLIM         0x1000000       0x2000          0x7FFFFFFF

Wir empfehlen die Einstellung folgender Werte:

SDATLIM 0x7FFFFFFF
HDATLIM 0x7FFFFFFF
SSTKLIM 0x7FFFFFFF
HSTKLIM 0x7FFFFFFF
SVMMLIM 0x7FFFFFFF
HVMMLIM 0x7FFFFFFF
SFNOLIM 2048
HFNOLIM 2048

Wir empfehlen eine Optimierung des Systems. Welche Parameterwerte allerdings hierzu geeignet sind, hängt von der Anzahl der Benutzer, die auf die Anwendung oder Datenbank zugreifen, und von der Größe der Datenbank selbst (d. h. dem verwendeten Pufferpool) ab. Das Folgende betrifft die Kernel-Parameter, die in /etc/conf/cf.d/stune definiert sind:

SHMMAX (Einstellempfehlung: 128 Mbyte) und SHMSEG (Einstellempfehlung: 15). Diese Parameter beeinflussen die MySQL-Datenbank-Engine bei der Erstellung der Benutzerpufferpools.

SFNOLIM und HFNOLIM sollten auf maximal 2048 gesetzt werden.

NPROC sollte (abhängig von der Anzahl der Benutzer) auf mindestens 3000/4000 gesetzt werden.

Ferner wird die Verwendung der folgenden Formel zur Berechnung der Werte für SEMMSL, SEMMNS und SEMMNU empfohlen:

SEMMSL = 13

13 hat sich als optimaler Wert sowohl für Progress als auch für MySQL erwiesen.

SEMMNS = SEMMSL × Anzahl der auf dem System ausgeführten Server

Setzen Sie SEMMNS auf den Wert von SEMMSL multipliziert mit der maximalen Anzahl der Datenbankserver, die gleichzeitig auf Ihrem System ausgeführt werden.

SEMMNU = SEMMNS

SEMMNU setzen Sie dann auf den gleichen Wert wie SEMMNS. Wahrscheinlich würde hier auch ein Wert von 75 Prozent von SEMMNS ausreichen, aber dies ist eine konservative Schätzung.

2.12.6. Anmerkungen zu OS/2

MySQL verwendet eine ganze Menge offener Dateien. Aus diesem Grund sollten Sie Ihre Datei CONFIG.SYS um etwas in der Art des Folgenden ergänzen:

SET EMXOPT=-c -n -h1024

Andernfalls könnte der folgende Fehler auftreten:

File 'xxxx' not found (Errcode: 24)

Wenn Sie MySQL mit OS/2 Warp 3 verwenden, benötigen Sie FixPack 29 oder höher. Bei OS/2 Warp 4 ist FixPack 4 oder höher erforderlich. Dies ist eine Anforderung der Pthreads-Bibliothek. MySQL muss auf einer Partition eines Typs installiert sein, der lange Dateinamen benutzt (also etwa HPFS, FAT32 usw.).

Das Skript INSTALL.CMD muss aus der OS/2-eigenen CMD.EXE ausgeführt werden und funktioniert unter Ersatz-Shells wie 4OS2.EXE unter Umständen nicht.

Das Skript scripts/mysql-install-db wurde umbenannt. Es heißt install.cmd und ist ein REXX-Skript, das die Standardsicherheitseinstellungen von MySQL einrichtet und die WorkPlace-Shell-Symbole für MySQL erstellt.

Dynamische Module sind einkompiliert, wurden aber nicht vollständig getestet. Dynamische Module sollten mit der Pthreads-Laufzeitbibliothek kompiliert werden.

gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \
    -o example udf_example.cc -L../lib -lmysqlclient udf_example.def
mv example.dll example.udf

Hinweis: Aufgrund der Beschränkungen in OS/2 dürfen UDF-Modulnamenstämme nicht länger als acht Zeichen sein. Module werden im Verzeichnis /mysql2/udf gespeichert, welches vom Skript safe-mysqld.cmd in der Umgebungsvariablen BEGINLIBPATH abgelegt wird. Wenn Sie UDF-Module verwenden, werden die angegebenen Erweiterungen ignoriert (es wird davon ausgegangen, dass diese ohnehin immer .udf lauten). Beispielsweise kann das gemeinsame Modul unter Unix example.so heißen; eine Funktion daraus würden Sie dann wie folgt laden:

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'example.so';

Bei OS/2 hieße das Modul example.udf, aber Sie würden die Modulerweiterung nicht angeben:

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'example';

2.13. Anmerkungen zur Perl-Installation

Die Perl-Unterstützung für MySQL erfolgt mithilfe der DBI-/DBD-Clientschnittstelle. Die Schnittstelle erfordert Perl 5.6.1 oder höher. Sie funktioniert nicht, wenn Sie eine ältere Perl-Version einsetzen.

Wenn Sie Transaktionen mit Perl DBI verwenden wollen, brauchen Sie DBD::mysql in der Version 1.2216 oder höher. Empfohlen wird DBD::mysql 2.9003 oder höher.

Sofern Sie MySQL 4.1 oder eine neuere Clientbibliothek verwenden, müssen Sie DBD::mysql 2.9003 oder höher in jedem Fall einsetzen.

Die Perl-Unterstützung ist nicht in den MySQL-Distributionen enthalten. Die erforderlichen Module für Unix erhalten Sie unter http://search.cpan.org bzw. für Windows durch Verwendung des ActiveState-Programms ppm. Die folgenden Abschnitte beschreiben die erforderlichen Abläufe.

Wenn Sie die MySQL-Benchmark-Skripten ausführen wollen, muss der Perl-Support für MySQL installiert sein. Siehe auch Abschnitt 7.1.4, „Die MySQL-Benchmark-Reihe“.

2.13.1. Installation von Perl unter Unix

Die Perl-Unterstützung durch MySQL setzt voraus, dass Sie die Unterstützung für die MySQL-Clientprogrammierung (Bibliotheken und Header-Dateien) installiert haben. Bei den meisten Installationsmethoden werden die notwendigen Dateien installiert. Haben Sie MySQL allerdings aus RPM-Dateien für Linux installiert, dann vergewissern Sie sich, dass Sie das Entwickler-RPM zur Installation verwendet haben. Die Clientprogramme befinden sich im Client-RPM, die Unterstützung für die Clientprogrammierung jedoch im Entwickler-RPM.

Wenn Sie die Perl-Unterstützung installieren wollen, erhalten Sie die erforderlichen Dateien beim CPAN (Comprehensive Perl Archive Network) unter http://search.cpan.org.

Die einfachste Möglichkeit, Perl-Module unter Unix zu installieren, besteht in der Verwendung des CPAN-Moduls. Ein Beispiel:

shell> perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

Die DBD::mysql-Installation führt eine Anzahl von Tests durch. Bei diesen Tests wird versucht, unter Angabe der Standardwerte für Benutzername und Passwort eine Verbindung zum lokalen MySQL Server herzustellen. (Der Standardbenutzername ist unter Unix Ihr Anmeldename und unter Windows ODBC. Das Standardpasswort heißt „no password“.) Wenn Sie mit diesen Einstellungen keine Verbindung zum Server herstellen können, weil beispielsweise Ihr Konto ein Passwort hat, dann schlagen die Tests fehl. Sie können force install DBD::mysql verwenden, um fehlgeschlagene Tests zu ignorieren.

DBI benötigt das Modul Data::Dumper. Dieses ist unter Umständen bereits installiert, andernfalls sollten Sie es vor der Installation von DBI installieren.

Es ist auch möglich, die Moduldistributionen in Form komprimierter tar-Archive herunterzuladen und die Module manuell zu erstellen. Um beispielsweise eine DBI-Distribution zu entpacken und zu erstellen, verwenden Sie folgende Vorgehensweise:

  1. Entpacken Sie die Distribution in das aktuelle Verzeichnis:

    shell> gunzip < DBI-VERSION.tar.gz | tar xvf -
    

    Dieser Befehl erstellt ein Verzeichnis namens DBI-VERSION.

  2. Wechseln Sie nun in das Stammverzeichnis der entpackten Distribution:

    shell> cd DBI-VERSION
    
  3. Erstellen Sie die Distribution und kompilieren Sie alles:

    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

Der Befehl make test ist wichtig, da mit ihm die Funktionsfähigkeit des Moduls verifiziert wird. Beachten Sie, dass der MySQL Server laufen muss, wenn Sie diesen Befehl während der DBD::mysql-Installation absetzen, um den Schnittstellencode auszuführen; andernfalls schlägt der Test fehl.

Sie sollten die DBD::mysql-Distribution bei jeder Installation eines neuen MySQL-Releases neu erstellen und installieren. Dies gilt insbesondere, wenn Sie beispielsweise feststellen, dass all Ihre DBI-Skripten nach der Aktualisierung von MySQL nicht mehr funktionieren.

Wenn Sie nicht die erforderlichen Berechtigungen zur Installation von Perl-Modulen im Systemverzeichnis haben oder lokale Perl-Module installieren wollen, ist die folgende Referenz für Ihre Belange vielleicht recht nützlich: http://servers.digitaldaze.com/extensions/perl/modules.html#modules

Lesen Sie dort das Kapitel „Installing New Modules that Require Locally Installed Modules“.

2.13.2. Installation von ActiveState-Perl unter Windows

Unter Windows müssen Sie Folgendes tun, um das DBD-Modul mit ActiveState-Perl zu installieren:

  1. Beschaffen Sie sich ActiveState Perl unter http://www.activestate.com/Products/ActivePerl/ und installieren Sie es.

  2. Öffnen Sie ein Konsolenfenster („Eingabeaufforderung“).

  3. Stellen Sie ggf. die Variable HTTP_proxy ein. So kann etwa folgende Einstellung erforderlich sein:

    set HTTP_proxy=my.proxy.com:3128
    
  4. Starten Sie das PPM-Programm:

    C:\> C:\perl\bin\ppm.pl
    
  5. Installieren Sie DBI, sofern Sie dies nicht bereits getan haben:

    ppm> install DBI
    
  6. Führen Sie, wenn alles geklappt hat, folgenden Befehl aus:

    install \
    ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd
    

Diese Vorgehensweise sollte bei ActiveState Perl 5.6 oder höher funktionieren.

Klappt dies nicht, dann sollten Sie stattdessen den MyODBC-Treiber installieren und über ODBC eine Verbindung zum MySQL Server herstellen:

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
  die "Got error $DBI::errstr when connecting to $dsn\n";

2.13.3. Probleme bei der Benutzung der DBI/DBD-Schnittstelle von Perl

Wenn Perl meldet, dass das Modul ../mysql/mysql.so nicht gefunden werden kann, dann liegt das wahrscheinlich daran, dass Perl die gemeinsame Bibliothek libmysqlclient.so nicht findet. Sie sollten dieses Problem auf eine der folgenden Weisen lösen können:

  • Kompilieren Sie die Distribution DBD::mysql mit perl Makefile.PL -static -config statt mit perl Makefile.PL.

  • Kopieren Sie libmysqlclient.so in das Verzeichnis, in dem sich Ihre anderen gemeinsamen Bibliotheken befinden (dies ist wahrscheinlich /usr/lib oder /lib).

  • Ändern Sie die -L-Optionen zur Kompilierung von DBD::mysql so ab, dass die tatsächliche Position von libmysqlclient.so berücksichtigt wird.

  • Unter Linux können Sie den Pfadnamen des Verzeichnisses, in dem sich libmysqlclient.so befindet, zur Datei /etc/ld.so.conf hinzufügen.

  • Fügen Sie den Pfadnamen des Verzeichnisses, in dem sich libmysqlclient.so befindet, der Umgebungsvariablen LD_RUN_PATH hinzu. Einige Systeme verwenden stattdessen LD_LIBRARY_PATH.

Beachten Sie, dass Sie möglicherweise auch die -L-Optionen ändern müssen, wenn auch andere Bibliotheken vom Linker nicht gefunden werden. Kann der Linker beispielsweise libc nicht finden, weil sich die Datei in /lib befindet, der Verknüpfungsbefehl aber -L/usr/lib angibt, dann ändern Sie die Option -L zu -L/lib oder fügen -L/lib zum vorhandenen Verknüpfungsbefehl hinzu.

Wenn Sie die folgenden Fehler von DBD::mysql erhalten, verwenden Sie wahrscheinlich gcc (oder eine alte Binärdatei, die mit gcc kompiliert wurde):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

Fügen Sie -L/usr/lib/gcc-lib/... -lgcc zum Verknüpfungsbefehl hinzu, wenn die Bibliothek mysql.so erstellt wird (überprüfen Sie die Ausgabe von make bezüglich mysql.so, wenn Sie den Perl-Client kompilieren). Die -L-Option sollte den Pfadnamen des Verzeichnisses angeben, in dem libgcc.a auf Ihrem System gespeichert ist.

Eine andere Ursache dieses Problems könnte sein, dass nicht sowohl Perl als auch MySQL mit gcc kompiliert wurden. In diesem Fall können Sie die Nichtübereinstimmung beheben, indem Sie beide mit gcc kompilieren.

Wenn Sie die Tests ausführen, gibt DBD::mysql unter Umständen die folgende Fehlermeldung aus:

t/00base............install_driver(mysql) failed:
Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

Dies bedeutet, dass Sie die Komprimierungsbibliothek -lz in der Verknüpfungszeile hinzufügen müssen. Dies können Sie tun, indem Sie in der Datei lib/DBD/mysql/Install.pm die Zeile

$sysliblist .= " -lm";

wie folgt ändern:

$sysliblist .= " -lm -lz";

Danach müssen Sie make realclean ausführen und nachfolgend von vorne mit der Installation beginnen.

Wenn Sie DBI unter SCO installieren wollen, müssen Sie Makefile in DBI-xxx und allen Unterverzeichnissen bearbeiten. Beachten Sie, dass das Folgende gcc 2.95.2 oder höher voraussetzt:

OLD:                                  NEW:
CC = cc                               CC = gcc
CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =

LD = ld                               LD = gcc -G -fpic
LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib

LD = ld                               LD = gcc -G -fpic
OPTIMISE = -Od                        OPTIMISE = -O1

OLD:
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include

NEW:
CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include

Diese Änderungen sind erforderlich, weil der Perl-Dynaloader die DBI-Module nicht lädt, wenn diese mit icc oder cc kompiliert wurden.

Wollen Sie das Perl-Modul auf einem System verwenden, das keine dynamischen Verknüpfungen unterstützt (wie z. B. SCO), dann können Sie eine statische Perl-Version erzeugen, die DBI und DBD::mysql enthält. Dies funktioniert so, dass Sie eine Perl-Version mit verknüpftem DBI-Code erzeugen und diese über Ihre aktuelle Perl-Installation installieren. Dieses verwenden Sie dann zur Erstellung einer Perl-Version, die zusätzlich den verknüpften DBD-Code beinhaltet und die Sie dann installieren.

Unter SCO müssen Sie zuvor die folgenden Umgebungsvariablen einstellen:

LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib

Oder:

LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
    /usr/progressive/lib:/usr/skunk/lib
LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
    /usr/progressive/lib:/usr/skunk/lib
MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
    /usr/skunk/man:

Sie erstellen zunächst eine Perl-Version, die ein statisch verknüpftes DBI-Modul enthält. Dies tun Sie durch Ausführen der folgenden Befehle in dem Verzeichnis, in dem Ihre DBI-Distribution gespeichert ist:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Danach müssen Sie das neue Perl installieren. Die Ausgabe von make perl gibt den exakten make-Befehl an, den Sie ausführen müssen, um die Installation durchzuführen. Unter SCO heißt der Befehl make -f Makefile.aperl inst_perl MAP_TARGET=perl.

Als Nächstes verwenden Sie das gerade erstellte Perl zur Erstellung eines anderen Perl, welches auch ein statisch verknüpftes DBD::mysql enthält. Hierzu führen Sie die folgenden Befehle in dem Verzeichnis aus, in dem sich Ihre DBD::mysql-Distribution befindet:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Abschließend sollten Sie dieses neue Perl installieren. Auch hier zeigt die Ausgabe von make perl den zu verwendenden Befehl an.


Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.