Inhaltsverzeichnis
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)“.
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“.
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“.
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.
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“.
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.
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“.
Vor der Installation von MySQL müssen Sie Folgendes tun:
Ermitteln Sie, ob MySQL auf Ihrer Plattform läuft.
Wählen Sie die zu installierende Distribution aus.
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.
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.
AIX 4.x, 5.x mit nativen Threads. Siehe auch Abschnitt 2.12.5.3, „Anmerkungen zu IBM-AIX“.
Amiga.
BSDI 2.x mit dem MIT-pthreads-Paket. Siehe auch Abschnitt 2.12.4.4, „Anmerkungen zu BSD/OS“.
BSDI 3.0, 3.1 und 4.x mit nativen Threads. Siehe auch Abschnitt 2.12.4.4, „Anmerkungen zu BSD/OS“.
Digital Unix 4.x mit nativen Threads. Siehe auch Abschnitt 2.12.5.5, „Anmerkungen zu Alpha-DEC-UNIX (Tru64)“.
FreeBSD 2.x mit dem MIT-pthreads-Paket. Siehe auch Abschnitt 2.12.4.1, „Anmerkungen zu FreeBSD“.
FreeBSD 3.x und 4.x mit nativen Threads. Siehe auch Abschnitt 2.12.4.1, „Anmerkungen zu FreeBSD“.
FreeBSD 4.x mit LinuxThreads. Siehe auch Abschnitt 2.12.4.1, „Anmerkungen zu FreeBSD“.
HP-UX 10.20 mit den DCE-Threads oder dem MIT-pthreads-Paket. Siehe auch Abschnitt 2.12.5.1, „Anmerkungen zu HP-UX Version 10.20“.
HP-UX 11.x mit den nativen Threads. Siehe auch Abschnitt 2.12.5.2, „Anmerkungen zu HP-UX Version 11.x“.
Linux 2.0+ mit LinuxThreads 0.7.1+ oder
glibc
2.0.7+ für verschiedene
CPU-Architekturen. Siehe auch Abschnitt 2.12.1, „Linux (alle Linux-Versionen)“.
Mac OS X. Siehe auch Abschnitt 2.12.2, „Anmerkungen zu Mac OS X“.
NetBSD 1.3/1.4 Intel und NetBSD 1.3 Alpha (erfordert GNU make). Siehe auch Abschnitt 2.12.4.2, „Anmerkungen zu NetBSD“.
Novell NetWare 6.0 und 6.5. Siehe auch Abschnitt 2.6, „Installation von MySQL unter NetWare“.
OpenBSD 2.5 mit nativen Threads. OpenBSD vor Version 2.5.x mit dem MIT-pthreads-Paket. Siehe auch Abschnitt 2.12.4.3, „Anmerkungen zu OpenBSD“.
OS/2 Warp 3, FixPack 29, und OS/2 Warp 4, FixPack 4. Siehe auch Abschnitt 2.12.6, „Anmerkungen zu OS/2“.
SCO OpenServer 5.0.X mit einer aktuellen Portierung des FSU-Pthreads-Pakets. Siehe auch Abschnitt 2.12.5.8, „Anmerkungen zu SCO UNIX und OpenServer 5.0.x“.
SCO OpenServer 6.0.x. Siehe auch Abschnitt 2.12.5.9, „Anmerkungen zu SCO OpenServer 6.0.x“.
SCO UnixWare 7.1.x. Siehe auch Abschnitt 2.12.5.10, „Anmerkungen zu SCO UnixWare 7.1.x und OpenUNIX 8.0.0“.
SGI Irix 6.x mit nativen Threads. Siehe auch Abschnitt 2.12.5.7, „Anmerkungen zu SGI Irix“.
Solaris 2.5 und höher mit nativen Threads auf SPARC und x86. Siehe auch Abschnitt 2.12.3, „Anmerkungen zu Solaris“.
SunOS 4.x mit dem MIT-pthreads-Paket. Siehe auch Abschnitt 2.12.3, „Anmerkungen zu Solaris“.
Tru64 Unix. Siehe auch Abschnitt 2.12.5.5, „Anmerkungen zu Alpha-DEC-UNIX (Tru64)“.
Windows 9x, Me, NT, 2000, XP und Windows Server 2003. Siehe auch Abschnitt 2.3, „Installation von MySQL unter Windows“.
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.
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.
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.
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.
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!)
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.
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
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.
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
<webmaster@mysql.com>
oder
<build@mysql.com>
mit. Bitte melden Sie Probleme
mit dem Download nicht über das Bugmeldesystem.
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.
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:
Distributionsdatei | mysql-standard-5.1.5-alpha-linux-i686.tar.gz |
Signaturdatei | mysql-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.
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
“.
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:
Verzeichnis | Verzeichnisinhalt |
bin | Clientprogramme und der mysqld-Server |
data | Logdateien, Datenbanken |
Docs | Dokumentation |
examples | Beispielprogramme und -skripten |
include | Include-Dateien (Header-Dateien) |
lib | Bibliotheken |
scripts | Hilfsprogrammskripten |
share | Fehlermeldungsdateien |
Installationen, die mit den Linux-RPM-Dateien von MySQL AB erstellt werden, erzeugen Dateien in den folgenden Systemverzeichnissen:
Verzeichnis | Verzeichnisinhalt |
/usr/bin | Clientprogramme und -skripten |
/usr/sbin | Der mysqld-Server |
/var/lib/mysql | Logdateien, Datenbanken |
/usr/share/doc/packages | Dokumentation |
/usr/include/mysql | Include-Dateien (Header-Dateien) |
/usr/lib/mysql | Bibliotheken |
/usr/share/mysql | Fehlermeldungs- und Zeichensatzdateien |
/usr/share/sql-bench | Benchmarks |
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:
Verzeichnis | Verzeichnisinhalt |
bin | Clientprogramme und der mysqld-Server |
data | Logdateien, Datenbanken |
docs | Dokumentation, ChangeLog |
include | Include-Dateien (Header-Dateien) |
lib | Bibliotheken |
scripts | mysql_install_db |
share/mysql | Fehlermeldungsdateien |
sql-bench | Benchmarks |
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:
Verzeichnis | Verzeichnisinhalt |
bin | Clientprogramme und -skripten |
include/mysql | Include-Dateien (Header-Dateien) |
info | Dokumentation im Info-Format |
lib/mysql | Bibliotheken |
libexec | Der mysqld-Server |
share/mysql | Fehlermeldungsdateien |
sql-bench | Benchmarks und der Crash-Me -Test |
var | Datenbanken 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.
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.
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:
Besorgen Sie sich die Distribution und installieren Sie sie.
Konfigurieren Sie, sofern erforderlich, eine Optionsdatei.
Wählen Sie den zu verwendenden Server aus.
Starten Sie den Server.
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“.
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
“.
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“.
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.
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“.
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.
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 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 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.
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
rechts neben dem angezeigten Installationspfad klicken.Wenn Sie die zu installierenden Komponenten und den Pfad gewählt haben, klicken Sie auf die Schaltfläche
, um den Bestätigungsdialog anzuzeigen.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
, um MySQL zu installieren. Wenn Sie Ihre Einstellungen noch einmal ändern wollen, klicken Sie auf die Schaltfläche . Um den MySQL-Installations-Assistenten zu verlassen, ohne MySQL zu installieren, klicken Sie auf die Schaltfläche .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.
Wenn Sie auf die Schaltfläche
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ü
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 im Menü .In diesem neuen Abschnitt im Menü
werden die folgenden Einträge eingerichtet:
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.
: 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.
: 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:\
.
Hierbei ist Programme
\MySQL\MySQL
Server 5.1
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:\
gespeichert. Hierbei ist Programme
\MySQLProgramme
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.
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“.
my.ini
my.ini
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“.
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
im Abschnitt des Windows-Menüs aufrufen.
Alternativ navigieren Sie zum Verzeichnis
bin
Ihrer MySQL-Installation und rufen
die Datei MySQLInstanceConfig.exe
direkt
auf.
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 my.ini
wird nun in
my
umbenannt, wobei timestamp
.ini.baktimestamp
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 und klicken dann auf die Schaltfläche
.
Wählen Sie die Option my.ini
. Die Serverinstallation und ihr
Ordner data
werden nicht entfernt.
Wenn Sie die Option
auswählen, wird das Dialogfeld angezeigt. Hier können Sie den Installationstyp auswählen, den Sie konfigurieren wollen.Wenn Sie den MySQL-Konfigurations-Assistenten für eine neue MySQL-Installation aufrufen oder die Option
für eine vorhandene Installation auswählen, wird das Dialogfeld aufgerufen.Es stehen zwei Konfigurationsmethoden zur Verfügung:
und . Die Option ist für Neubenutzer vorgesehen, die direkt mit MySQL arbeiten wollen, ohne sich vorher Gedanken zur Serverkonfiguration machen zu müssen. Die Option 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
die richtige Wahl für Ihre Bedürfnisse. Wenn Sie die Option wählen, stellt der MySQL-Konfigurations-Assistent alle Konfigurationsoptionen mit Ausnahme von (Dienstoptionen) und (Sicherheitsoptionen) automatisch ein.Unter Umständen werden bei Auswahl von
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 empfohlen.Um die Auswahl Abschnitt 2.3.5.11, „Der Dialog zu Dienstoptionen“, bzw. Abschnitt 2.3.5.12, „Der Dialog zu Sicherheitsoptionen“.
fertig zu stellen, lesen Sie bitte die Abschnitte zu und inSie 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.
: 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.
: 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.
: 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.
Das Dialogfeld InnoDB
-Speicher-Engine verfügbar ist und
welcher Anteil der Serverressourcen für
InnoDB
bereitgestellt wird.
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.
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.
InnoDB
-Speicher-Engine vollständig und
weist die gesamten Serverressourcen der
MyISAM
-Engine zu. Sie wird Benutzern
empfohlen, die InnoDB
überhaupt nicht
verwenden.
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
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.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
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.: 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.
: 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.
: 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.
Im Dialogfeld
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
.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 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“.
können Sie den strikten SQL-Servermodus aktivieren oder deaktivieren. Bei aktiviertem striktem Modus (Standard) verhält sich MySQL ähnlich wie andere Datenbankmanagementsysteme.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
können Sie den Standardzeichensatz des MySQL Servers ändern.
latin1
als
Standardzeichensatz verwenden wollen.
latin1
wird für Englisch und viele
westeuropäische Sprachen verwendet.
utf8
als Standardzeichensatz
verwenden wollen. Dies ist ein Unicode-Zeichensatz, der
Zeichen vieler verschiedener Sprachen enthält.
: 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.
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
. 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
.
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 .
Um das root
-Passwort einzurichten, geben
Sie das gewünschte Passwort in die Felder und
ein. Wenn Sie einen
vorhandenen Server umkonfigurieren, müssen Sie das vorhandene
root
-Passwort in das Feld
eingeben.
Um root
-Anmeldungen über das Netzwerk zu
verhindern, markieren Sie das Kontrollkästchen
. Dies erhöht die Sicherheit Ihres
root
-Kontos.
Um ein anonymes Benutzerkonto einzurichten, markieren Sie das Kontrollkästchen
. Die Erstellung eines solchen Kontos kann die Serversicherheit verringern und Probleme mit der Anmeldung und mit Berechtigungen verursachen. Aus diesem Grund wird davon abgeraten.Das letzte Dialogfeld im MySQL-Konfigurations-Assistent ist
. Um den Konfigurationsvorgang zu starten, klicken Sie auf die Schaltfläche . Wenn Sie zu einem der vorherigen Dialogfelder zurückkehren wollen, klicken Sie auf die Schaltfläche . Um den MySQL-Konfigurations-Assistenten zu verlassen, ohne MySQL zu konfigurieren, klicken Sie auf die Schaltfläche .Wenn Sie auf die Schaltfläche
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
, um den MySQL-Konfigurations-Assistenten zu beenden.
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="
.
Hierbei wird C:\Programme\MySQL\MySQL
Server 5.1
\my.ini"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.
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).
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:
Extrahieren Sie das Archiv in das gewünschte Installationsverzeichnis.
Erstellen Sie die Optionsdatei.
Wählen Sie den MySQL Server-Typ aus.
Starten Sie den MySQL Server.
Schützen Sie die standardmäßig eingerichteten Benutzerkonten.
Die Abläufe werden in den nachfolgenden Abschnitten beschrieben.
So installieren Sie MySQL manuell:
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.
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.
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“.
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.
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:
Sie verschieben das gesamte Verzeichnis
data
und alle darin enthaltenen Daten
von C:\Programme\MySQL\MySQL Server
5.1\data
nach
E:\mydata
.
Sie verwenden die Option --datadir
, um die
neue Position des Datenverzeichnisses bei jedem Serverstart
anzugeben.
Die folgende Tabelle zeigt die in MySQL 5.1 für Windows verfügbaren Server:
Binärdatei | Beschreibung |
mysqld-debug | Mit allen Debugging-Funktionen und automatischer Überprüfung der
Speicherzuordnung kompiliert. Unterstützt auch
InnoDB - und
BDB -Tabellen. |
mysqld | Optimierte Binärdatei mit InnoDB -Unterstützung. |
mysqld-nt | Optimierte Binärdatei für Windows NT/2000/XP mit Unterstützung von Named Pipes. |
mysqld-max | Optimierte Binärdatei mit Unterstützung für
InnoDB - und
BDB -Tabellen. |
mysqld-max-nt | Wie 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.
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.
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.
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 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 .
Wählen Sie nun im angezeigten Fenster
die Registerkarte und klicken Sie auf die Schaltfläche .Unter Systemvariablen wählen Sie und klicken dann auf die Schaltfläche . Das Dialogfeld 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 , 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=
;
hierdurch wird der Name einer Optionsdatei angegeben, die
der Server beim Start auslesen soll.
file_name
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.
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.
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
.
Dieser Abschnitt listet einige der Schritte auf, die bei der Aktualisierung von MySQL unter Windows erforderlich sind.
Lesen Sie Abschnitt 2.10, „MySQL aktualisieren (Upgrade/Downgrade)“. Sie finden dort weitere, nicht Windows-spezifische Informationen zum Upgrade von MySQL.
Fertigen Sie immer eine Sicherung Ihrer aktuellen MySQL-Installation an, bevor Sie ein Upgrade durchführen. Siehe auch Abschnitt 5.10.1, „Datenbank-Datensicherungen“.
Laden Sie die aktuelle Windows-Distribution von MySQL unter http://dev.mysql.com/downloads/ herunter.
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.
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.
Wenn Sie den MySQL-Installations-Assistenten verwenden, starten Sie den Assistenten wie in Abschnitt 2.3.4, „Verwendung des MySQL-Installations-Assistenten“, beschrieben.
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.
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“.)
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.
Wenn Fehler auftreten, finden Sie weitere Informationen in Abschnitt 2.3.14, „Troubleshooting einer MySQL-Installation unter Windows“.
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
C:\>binary_log_file
--result-file=/tmp/bin.sqlmysql --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
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
'
angezeigt wird), finden Sie weitere Informationen in
Abschnitt 2.12.1.2, „Anmerkungen zur Binärdistribution (Linux)“.
xxxx
' could not be looked
up
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-
(d. h., der Zusatz VERSION
.i386.rpm-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-
shell>VERSION
.i386.rpmrpm -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.
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-
.
Ferner wird eine symbolische Verknüpfung
VERSION
/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-Version | MySQL-Version |
10.2–10.2.2 | 3.23.51 |
10.2.3–10.2.6 | 3.23.53 |
10.3 | 4.0.14 |
10.3.2 | 4.0.16 |
10.4.0 | 4.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
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:
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.
Melden Sie sich am Zielserver über einen Clientcomputer an, der Zugriff auf das Verzeichnis hat, in dem Sie MySQL installieren wollen.
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.
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.
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
Initialisieren Sie ggf. das Datenverzeichnis und die Grant-Tabellen, indem Sie mysql_install_db an der Serverkonsole ausführen.
Starten Sie den MySQL Server mit mysqld_safe an der Serverkonsole.
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
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:
Perl: http://forge.novell.com/modules/xfcontent/downloads.php/perl/Modules/
PHP: http://forge.novell.com/modules/xfcontent/downloads.php/php/Modules/
(Die PHP 5-Erweiterung für MySQL 4.1 sollte auch mit MySQL 5.1 funktionieren.)
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.
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-
auf. Hierbei ist VERSION
-OS
.tar.gz
eine Zahl (z. B.
VERSION
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 <
shell>/path/to/mysql-VERSION-OS
.tar.gz | tar xvf -ln -s
shell>full-path-to-mysql-VERSION-OS
mysqlcd 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:
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.
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
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.
Entpacken Sie die Distribution. Hierdurch wird das Installationsverzeichnis erstellt. Erstellen Sie dann eine symbolische Verknüpfung zu diesem Verzeichnis:
shell>gunzip <
shell>/path/to/mysql-VERSION-OS
.tar.gz | tar xvf -ln -s
full-path-to-mysql-VERSION-OS
mysql
Der Befehl tar erstellt ein Verzeichnis
namens
mysql-
.
Der Befehl VERSION
-OS
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
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.
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.
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
.
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“.
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“.
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
im
Datenverzeichnis.
host_name
.err
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.
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-
.
Hierbei ist VERSION
.tar.gzVERSION
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.
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-
shell>VERSION
.tar.gz | tar -xvf -cd mysql-
shell>VERSION
./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:
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.
Wählen Sie das Verzeichnis aus, in das Sie die Distribution entpacken wollen, und rufen Sie dieses auf.
Beschaffen Sie sich wie in Abschnitt 2.1.3, „Woher man MySQL bekommt“, beschrieben eine Distributionsdatei.
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
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.
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?“.
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“.
Wechseln Sie nun in das Installationsverzeichnis:
shell> cd /usr/local/mysql
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.
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
.
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“.
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
im
Datenverzeichnis.
host_name
.err
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.
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.
nicht erstellen konnte (wobei N
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.
nicht.
N
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=
können Sie definieren, welche zusätzlichen Zeichensätze
in den Server einkompiliert werden sollen.
LIST
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“.
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:
Laden Sie Cygwin von http://cygwin.com herunter und installieren Sie es.
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.
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:
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.
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.
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
.
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“.
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.
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
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.
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.
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.)
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:
Besorgen Sie sich eine von MySQL AB gepackte Quelldistribution. Diese finden Sie unter http://dev.mysql.com/downloads/.
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:
Ein System unter Unix oder einem Unix-Derivat (z. B. Linux).
Ein auf dem System installiertes BitKeeper 3.0. Informationen zu Download und Installation von BitKeeper finden Sie in Abschnitt 2.8.3, „Installation vom Entwicklungs-Source-Tree“.
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“.
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:
Erstellen Sie ein Arbeitsverzeichnis (z. B.
C:\workdir
).
Entpacken Sie die Quelldistribution mit
WinZip oder einem anderen Windows-Tool,
das .zip
-Dateien lesen kann, in das
gerade erstellte Verzeichnis.
Starten Sie Visual Studio.
Wählen Sie im Menü
den Eintrag .
Öffnen Sie den Arbeitsbereich
mysql.dsw
, den Sie im
Arbeitsverzeichnis finden.
Wählen Sie im Menü
den Eintrag .Klicken Sie auf der anderen Seite des Bildschirms auf
und dann auf die Schaltfläche .Betätigen Sie F7, um die Erstellung des Debugservers, der Bibliotheken und einiger Clientanwendungen zu starten.
Kompilieren Sie die Release-Version auf gleiche Weise.
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 im Menü
auswählen können.
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.
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.
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:
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“.
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“.
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.
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“.
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
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-
an. Hierbei steht VERSION
-win-src.zipVERSION
für
die Version Ihres MySQL-Source-Trees.
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++“.
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.
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“.
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“.
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.
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.
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
“.
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“.
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.
Überprüfen Sie nun, ob Sie den Server herunterfahren können:
shell> bin/mysqladmin -u root shutdown
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“.
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_% | | +------+--------+------+
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-
,
die den Benchmark-Code und die Daten enthalten.
VERSION
-i386.rpm
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
.
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“.
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=/
shell>some_tmp_dir
/MYSQL_UNIX_PORT=/
shell>some_tmp_dir
/mysql.sockexport 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.
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-
)
verwenden, wird das Skript mysql.server im
Verzeichnis VERSION
.rpm/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:
Skript | Abschnitte in der Optionsdatei |
mysqld | [mysqld] , [server] ,
[mysqld- |
mysqld_safe | [mysqld] , [server] ,
[mysqld_safe] |
mysql.server | [mysqld] , [mysql.server] ,
[server] |
[mysqld-
bedeutet, dass Abschnitte mit Namen wie
major_version
][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“.
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:
Wenn Sie InnoDB
-Tabellen verwenden,
finden Sie Informationen in
Abschnitt 14.2.3, „Konfiguration“.
Setzen Sie BDB
-Tabellen
(BerkeleyDB-Tabellen) ein, dann finden Sie Informationen
in Abschnitt 14.5.3, „BDB-Startoptionen“.
Wenn Sie MySQL-Cluster verwenden, finden Sie Informationen in Abschnitt 16.4, „MySQL Cluster: Konfiguration“.
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
und
host_name
.err
,
wobei host_name
.loghost_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
shell>host_name
.errtail
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
aus.
(Die Standardportnummer von MySQL ist 3306.) Betätigen Sie
dann mehrfach die Eingabetaste. Erhalten Sie keine
Fehlermeldung in der Art von your_host_name
tcp_ip_port_number
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“.
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 root
—
ohne 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('
mysql>newpwd
');SET PASSWORD FOR ''@'%' = PASSWORD('
newpwd
');
SET PASSWORD
verwenden Sie unter Unix wie
folgt:
shell>mysql -u root
mysql>SET PASSWORD FOR ''@'localhost' = PASSWORD('
mysql>newpwd
');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('
mysql>newpwd
');SET PASSWORD FOR 'root'@'%' = PASSWORD('
newpwd
');
Unter Unix geben Sie Folgendes ein:
shell>mysql -u root
mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('
mysql>newpwd
');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 "
shell>newpwd
"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“.
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
.
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:
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.)
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.
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
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 //
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“.
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 '
shell>other_hostname
' createdb_name
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
shell>db_name
mysqldump -h '
other_hostname
' --opt --compressdb_name
| mysqldb_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
shell>db_name
gunzip <
db_name
.gz | mysqldb_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
shell>DUMPDIR
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
shell>db_name
# create databasecat
shell>DUMPDIR
/*.sql | mysqldb_name
# create tables in databasemysqlimport
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.
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:
Beenden Sie den älteren MySQL Server, auf den Sie das Downgrade durchführen.
Starten Sie den neueren MySQL Server, von dem aus Sie das Downgrade durchführen.
Speichern Sie alle Tabellen, auf die der ältere Server nicht zugreifen konnte, mithilfe von mysqldump, um eine Speicherauszugsdatei zu erstellen.
Beenden Sie den neueren MySQL Server und starten Sie den älteren neu.
Laden Sie die Speicherauszugsdatei in den älteren Server. Nun sollten Sie auf Ihre Tabellen zugreifen können.
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.
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.
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.
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:
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
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
<benchmarks@mysql.com>
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“.
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
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.
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.
MySQL sollte auf MkLinux mit dem neuesten
glibc
-Paket funktionieren (getestet mit
glibc
2.0.7).
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).
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“.
Unter Mac OS X kann tar lange Dateinamen
nicht verarbeiten. Wenn Sie eine
.tar.gz
-Distribution entpacken müssen,
verwenden Sie stattdessen gnutar.
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“.
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“.
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:
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.
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.
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“.
In diesem Abschnitt erhalten Sie Informationen zur Verwendung von MySQL unter Varianten von BSD Unix.
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.
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.
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
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.
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.
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.)
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
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.
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=
so zu
ändern, dass sie zu Ihrer CPU passt. Normalerweise müssen
xxx
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.
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.
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
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.
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
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.
Melden Sie sich als root
an.
Aktivieren Sie den SUDS-Treiber, indem Sie die Datei
/etc/conf/sdevice.d/suds
bearbeiten.
Ändern Sie das N
im zweiten Feld zu
Y
.
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.
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.
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
erstellen, aber dies nicht mit MySQLs eigener
src_directory
/bdb/build_unix/BDB
-Version. Der Workaround sieht wie folgt
aus:
Führen Sie die normalen für MySQL erforderlichen Konfigurationsarbeiten durch.
cd bdb/build_unix/
cp -p Makefile to Makefile.sav
Führen Sie unter Verwendung derselben Optionen ../dist/configure aus.
Führen Sie gmake aus.
cp -p Makefile.sav Makefile
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.
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
erstellen, aber dies nicht mit MySQLs eigener
src_directory
/bdb/build_unix/BDB
-Version. Der Workaround sieht wie folgt
aus:
Führen Sie die normalen für MySQL erforderlichen Konfigurationsarbeiten durch.
cd bdb/build_unix/
cp -p Makefile to Makefile.sav
Führen Sie unter Verwendung derselben Optionen ../dist/configure aus.
Führen Sie gmake aus.
cp -p Makefile.sav Makefile
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.
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';
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“.
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:
Entpacken Sie die Distribution in das aktuelle Verzeichnis:
shell> gunzip < DBI-VERSION
.tar.gz | tar xvf -
Dieser Befehl erstellt ein Verzeichnis namens
DBI-
.
VERSION
Wechseln Sie nun in das Stammverzeichnis der entpackten Distribution:
shell> cd DBI-VERSION
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“.
Unter Windows müssen Sie Folgendes tun, um das
DBD
-Modul mit ActiveState-Perl zu
installieren:
Beschaffen Sie sich ActiveState Perl unter http://www.activestate.com/Products/ActivePerl/ und installieren Sie es.
Öffnen Sie ein Konsolenfenster („Eingabeaufforderung“).
Stellen Sie ggf. die Variable HTTP_proxy
ein. So kann etwa folgende Einstellung erforderlich sein:
set HTTP_proxy=my.proxy.com:3128
Starten Sie das PPM-Programm:
C:\> C:\perl\bin\ppm.pl
Installieren Sie DBI
, sofern Sie dies
nicht bereits getan haben:
ppm> install DBI
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";
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.