Scriptindex.de

[ Menü ]

Home
News
Scripts
Neuzugänge
Suchen
Bücher
Manuals

[ Inhalt ]

Script eintragen
Tutorial eintragen
Newsletter
Umfragen
Link zu uns
Werbung bei uns
Kontakt
Impressum

[ Statistik ]

Hits gesamt: 3781622
Hits Heute: 144
max. Hits (10.07.07): 6964
User Online: 16
Scripts: 2748

[ Partner ]

CodeBase
I.S.U.M.
LUG Bayreuth
PEAR NEWS
PHP Classes

[ Umfrage ]

Würden Sie ein Forum zum Thema Scripts bei uns wünschen?
Ja, würde ich nutzen
Vielleicht
Nein, es gibt bereits zu Viele

[ Eigene Domain? ]

[ Buchtipp ]

HTML Ge- Packt. Die Ge- Packte Referenz
HTML Ge- Packt. Die Ge- Packte Referenz

Manuals > MySQL-Referenzhandbuch für Version 4.1.1-alpha - 3 Installation von MySQL

MySQL-Referenzhandbuch für Version 4.1.1-alpha - 3 Installation von MySQL Go to the first, previous, next, last section, table of contents.


3 Installation von MySQL

Dieses Kapitel beschreibt, woher man MySQL bezieht und wie man MySQL installiert:

3.1 Schnelle Standard-Installation von MySQL

3.1.1 MySQL auf Linux installieren

Die empfohlene Vorgehensweise für die Installation von MySQL auf Linux ist die Benutzung einer RPM-Datei. Die MySQL-RPMs werden aktuell auf einer RedHat-Version 6.2 gebaut, sollten aber auch auf anderen Linux-Versionen funktionieren, die rpm unterstützen und glibc benutzen.

Wenn Sie Probleme mit einer RPM-Datei haben, wenn Sie beispielsweise den Fehler ``Sorry, the host 'xxxx' could not be looked up'' erhalten, sehen Sie bitte unter section 3.1.1 MySQL auf Linux installieren nach.

Die RPM-Dateien, die Sie benutzen sollten, sind:

  • MySQL-VERSION.i386.rpm Der MySQL-Server. Sie brauchen diese, es sei denn, Sie wollen sich lediglich mit einem MySQL-Server verbinden, der auf einer anderen Maschine läuft.
  • MySQL-client-VERSION.i386.rpm Die Standard-MySQL-Client-Programme. Dieses Paket sollten Sie wohl immer installieren.
  • MySQL-bench-VERSION.i386.rpm Tests und Benchmarks. Erfordert Perl und msql-mysql-modules RPMs.
  • MySQL-devel-VERSION.i386.rpm Bibliotheken und Include-Dateien, die benötigt werden, wenn Sie andere MySQL-Clients kompilieren wollen, beispielsweise Perl-Module.
  • MySQL-VERSION.src.rpm Dieses Paket enthält den Quelltext für alle obigen Pakete. Es kann auch dazu benutzt werden, um RPMs für andere Architekturen zu bauen (zum Beispiel für Alpha oder SPARC).

Um alle Dateien in einem RPM-Paket zu sehen, geben Sie folgendes ein: shell> rpm -qpl MySQL-VERSION.i386.rpm

Um eine minimale Standard-Installation durchzuführen, geben Sie folgendes ein:

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

Um nur das Client-Paket zu installieren, geben Sie folgendes ein:

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

Das RPM legt Dateien in `/var/lib/mysql' ab. Ausserdem erzeugt das RPM die entsprechenden Einträge in `/etc/rc.d/', um den Server beim Booten automatisch zu starten. (Falls Sie bereits vorher eine Installation durchgeführt haben, bedeutet das, dass Sie eine Kopie Ihrer vorher installierten MySQL-Startdateien machen sollten, falls Sie darin Änderungen vorgenommen haben, damit Sie diese Änderungen nicht verlieren.)

Nach der Installation der RPM-Datei(en) sollte der mysqld-Daemon laufen und Sie sollten jetzt in der Lage sein, mit der Benutzung von MySQL zu beginnen. See section 3.4 Einstellungen und Tests nach der Installation.

Wenn etwas schief geht, finden Sie weitere Informationen im Kapitel über die Binär-Installationen. See section 3.2.6 MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden.

3.1.2 Installation von MySQL unter Windows

Der MySQL-Server für Windows ist in zwei Distributionstypen erhältlich:

  1. Die Binärdistribution enthält ein Setup-Programm, das alles Benötigte installiert, so dass Sie den Server sofort starten können.
  2. Die Quelldistribution enthält den gesamten Code und Unterstützungsdateien, um die ausführbaren Dateien unter Benutzung des VC++-6.0-Kompilers zu bauen. See section 3.3.7 Windows-Quelldistribution.

Im Allgemeinen sollten Sie die Binärdistribution benutzen.

Sie benötigen folgendes:

  • Ein Windows-32-Bit-Betriebssystem der Familien Windows 9x, ME, NT oder Windows 2000. Die NT-Familie gestattet, den MySQL-Server als Systemdienst laufen zu lassen. See section 3.6.2.2 MySQL auf Windows NT oder Windows 2000 starten. Wenn Sie Tabellen benutzen, die größer als 4 GB sind, sollten Sie MySQL auf NTFS oder einem neueren Dateisystem installieren. Vergessen Sie bei der Erzeugung der Tabellen nicht, MAX_ROWS und AVG_ROW_LENGTH zu benutzen. See section 7.5.3 CREATE TABLE-Syntax.
  • TCP/IP-Protokollunterstützung.
  • Die MySQL-Binär- oder Quelldistribution für Windows kann von http://www.mysql.com/downloads/ herunter geladen werden. Hinweis: Die Distributionsdateien werden in einem komprimierten Format zur Verfügung gestellt. Wir empfehlen die Benutzung eines FTP-Clients, der in der Lage ist, abgebrochene FTP-Downloads wieder aufzunehmen (resume).
  • Ein ZIP-Programm, um die Distributionsdatei zu entpacken.
  • Genug Platz auf der Festplatte, um die Datenbanken entsprechend Ihren Anforderungen zu entpacken, zu installieren und zu erzeugen.
  • Wenn Sie planen, sich über ODBC mit dem MySQL-Server zu verbinden, benötigen Sie zusätzlich den MyODBC-Treiber. See section 9.3 MySQL-ODBC-Unterstützung.

3.1.2.1 Binärdateien installieren

  1. Wenn Sie auf einem NT- oder Windows-2000-Server arbeiten, melden Sie sich als Benutzer mit Administrationsrechten an.
  2. Wenn Sie ein Upgrade einer früheren MySQL-Installation durchführen, müssen Sie den Server anhalten. Wenn Sie den Server als Systemdienst laufen lassen, geben Sie ein: C:\> NET STOP MySQL Ansonsten geben Sie folgendes ein: C:\mysql\bin> mysqladmin -u root shutdown
  3. Auf NT-/Windows-2000-Maschinen müssen Sie auch den Systemdienst entfernen, wenn Sie die ausführbare Datei des Servers (z. B. -max or -nt) austauschen wollen: C:\mysql\bin> mysqld-max-nt --remove
  4. Entpacken Sie die Distributionsdatei in ein temporäres Verzeichnis.
  5. Starten Sie `setup.exe', um den Installationsprozess zu beginnen. Wenn Sie in ein anderes Verzeichnis als das vorgabemäßige (`c:\mysql') installieren wollen, legen Sie mit der Schaltfläche Durchsuchen das gewünschte Verzeichnis fest.
  6. Beenden Sie den Installationsprozess.

Seit MySQL 3.23.38 enthält die Windows-Distribution sowohl die normalen als auch die MySQL-Max-Binärdateien. Der wichtigste Vorteil der Benutzung der normalen mysqld.exe-Binärdatei liegt darin, dass sie etwas schneller ist und weniger Ressourcen belegt.

Hier ist eine Liste der unterschiedlichen MySQL-Server, die Sie benutzen können:
mysqld Kompiliert mit komplettem Debugging und automatischer Überprüfung der Speicherzuordnung (memory allocation), symbolischen Links, InnoDB- und BDB-Tabellen.
mysqld-opt Optimierte Binärdistribution ohne Unterstützung von Transaktionstabellen.
mysqld-nt Optimierte Binärdatei für NT mit Unterstützung von Named Pipes. Man kann diese Version auf Windows 98 laufen lassen, aber in diesem Fall werden keine Named Pipes angelegt und man muss TCP/IP installiert haben.
mysqld-max Optimierte Binärdistribution mit Unterstützung symbolischer Links, InnoDB und BDB-Tabellen.
mysqld-max-nt Wie mysqld-max, aber mit Unterstützung von Named Pipes kompiliert.

Alle genannten Binärdistributionen sind für den Pentium Pro Prozessor optimiert, sollten aber auf jedem Intel-Prozessor >= 386 laufen.

ACHTUNG: Wenn Sie InnoDB-Tabellen benutzen wollen, müssen Sie bestimmte Start-Optionen in Ihrer `my.ini'-Datei festlegen! See section 8.5.2 Mit InnoDB anfangen - Optionen.

3.2 Allgemeine Installationsthemen

3.2.1 Wie man MySQL erhält

Sehen Sie wegen Informationen zur aktuellen Version und für Download-Anweisungen auf MySQL home page nach.

Unser Haupt-Mirror-Server für den Download ist hier:

http://mirrors.sunsite.dk/mysql/

Wenn Sie Interesse haben, eine MySQL-Mirror-Site beizusteuern, können Sie anonymes rsync mit rsync://sunsite.dk/ftp/mirrors/mysql/ machen. Schicken Sie bitte eine E-Mail an webmaster@mysql.com und geben Sie uns Bescheid, wo Ihr Mirror liegt, damit wir ihn der unten stehenden Liste hinzufügen können.

Wenn Sie Probleme beim Download von unserer Hauptseite aus haben, probieren Sie eine der unten stehenden Mirror-Sites.

Geben Sie bitte webmaster@mysql.com Bescheid, wenn Sie auf schlechte oder veraltete Mirror-Sites stoßen.

3.2.2 Betriebssysteme, die von MySQL unterstützt werden

Wir benutzen GNU Autoconf, daher ist es möglich, MySQL auf alle modernen Betriebssysteme zu portieren, auf denen Posix-Threads und ein C++-Kompiler funktionieren. (Um nur den Client-Code zu kompilieren, wir lediglich ein C++-Kompiler benötigt.) Wir benutzen und entwickeln die Software selbst hauptsächlich auf Sun Solaris (Versionen 2.5 - 2.7) und SuSE Linux Version 7.x.

Beachten Sie, dass die native Thread-Unterstützung für viele Betriebssysteme nur mit den neuesten Versionen funktioniert. Es wurde berichtet, dass MySQL erfolgreich auf folgenden Betriebssystemen / Thread-Paket-Kombinationen kompiliert wurde:

Beachten Sie, dass nicht alle Plattformen gleichermaßen gut geeignet sind, um MySQL laufen zu lassen. Wie gut eine bestimmte Plattform für hohe Last und geschäftskritische Anwendungen geeignet ist, hängt von folgenden Faktoren ab:

  • Allgemeine Stabilität der Thread-Bibliothek. Eine Plattform mag in anderer Hinsicht einen exzellenten Ruf haben, aber wenn die Thread-Bibliothek unstabil ist, die von MySQL aufgerufen wird, läuft MySQL nur so stabil wie die Thread-Bibliothek, selbst wenn alles Sonstige perfekt ist.
  • Fähigkeit des Kernels und / oder der Thread-Bibliothek, die Vorteile von SMP auf Mehrprozessor-Systemen wahrzunehmen. Mit anderen Worten: Wenn ein Prozess einen Thread anlegen, sollte es für diesen Thread möglich sein, auf anderen Prozessoren zu laufen als der Original-Prozess.
  • Fähigkeit des Kernels und / oder der Thread-Bibliothek, viele Threads laufen zu lassen, die häufig einen Mutex über eine kurze, kritische Region anlegen / lösen können ohne exzessive Kontext-Umschaltungen. Mit anderen Worten: Wenn die Implementation von pThread_mutex_lock() zu sehr darauf bedacht ist, CPU zu erlangen, wird das MySQL gewaltig schmerzen. Wenn man sich dieser Tatsache nicht bewusst ist, machen zusätzliche Prozessoren MySQL in der Tat langsamer.
  • Allgemeine Stabilität und Performance des Dateisystems.
  • Fähigkeit des Dateisystems, überhaupt mit großen Dateien umgehend zu können, und zwar effizient, wenn Ihre Tabellen Groß sind.
  • Unser Grad von Erfahrung, hier bei MySQL AB, mit der Plattform. Wenn wir eine Plattform gut kennen, setzen wir plattformspezifische Optimierungen / Verbesserungen (Fixes) ein, die zur Kompilierzeit aktiv werden. Darüber hinaus können wir Sie beraten, wie Sie Ihr System optimal für MySQL konfigurieren.
  • Umfang des Testens ähnlicher Konfigurationen, das wir intern durchgeführt haben.
  • Anzahl von Benutzern, die MySQL auf dieser Plattform erfolgreich mit ähnlichen Konfigurationen haben laufen lassen. Wenn diese Zahl Groß ist, ist die Wahrscheinlichkeit viel geringer, plattformspezifische Überraschungen zu erleben.

Nach den genannten Kriterien sind die besten Plattformen für MySQL bislang x86 mit SuSE Linux 7.1, 2.4 Kernel und ReiserFS (oder jede ähnliche Linux-Distribution) und Sparc mit Solaris 2.7 oder 2.8. FreeBSD kommt als drittes, aber wir hoffen wirklich, dass es zur Spitze aufschließt, sobald erst einmal die Thread-Bibliothek verbessert ist. Wir hoffen auch, dass wir alle anderen Plattformen, auf denen MySQL kompiliert werden kann und korrekt läuft, die aber nicht ganz denselben Grad an Stabilität und Performance aufweisen, in die Spitzenkategorie aufnehmen können. Das erfordert von unserer Seite aus einige Kooperationsbemühungen mit den Entwicklern der Betriebssystem-Bibliothek-Komponenten, von denen MySQL abhängt. Wenn Sie Interesse daran haben, eine dieser Komponenten zu verbessern und in der Lage sind, ihre Entwicklung zu beeinflussen, und detailliertere Informationen darüber brauchen, was MySQL benötigt, um besser zu laufen, schicken Sie eine E-Mail an internals@lists.mysql.com.

Beachten Sie bitte auch, dass der obige Vergleich nichts darüber aussagen will, dass ein Betriebssystem allgemein besser oder schlechter als ein anderes sei. Wir reden hier über die Auswahl eines bestimmten Betriebssystems für einen ganz bestimmten Zweck - nämlich, MySQL laufen zu lassen, und vergleichen die Betriebssysteme nur in dieser Hinsicht. Folglich wäre das Ergebnis dieses Vergleichs ein anderes, wenn wir weitere Belange berücksichtigen würden. In manchen Fällen liegt der Grund, warum ein Betriebssystem besser als ein anderes geeignet ist, schlicht darin, dass wir auf dieser speziellen Plattform mehr Tests und Optimierungen durchgeführt haben. Wir stellen hier nur unsere Beobachtungen dar, um Ihnen bei der Entscheidung zu helfen, auf welcher Plattform Sie MySQL benutzen sollten.

3.2.3 Welche MySQL-Version Sie benutzen sollten

Zunächst müssen Sie entscheiden, ob Sie das letzte Entwicklungs-Release oder das letzte stabile Release benutzen wollen:

  • Normalerweise, wenn Sie MySQL zum ersten Mal benutzen, oder wenn Sie versuchen, MySQL auf ein System zu portieren, für das es keine Binärdistribution gibt, empfehlen wir, das stabile Release zu nehmen (aktuell Version 4.1.1-alpha). Beachten Sie, dass alle MySQL-Releases mit den MySQL-Benchmarks und einer umfassenden Test-Suite getestet sind, bevor das Release heraus gegeben wird.
  • Wenn Sie ein altes System laufen lassen und es aktualisieren möchten, aber nicht riskieren wollen, dass ein Update nicht reibungslos klappt, sollten Sie zur aktuellsten Version des Zweiges aktualisieren, den Sie benutzen (bei dem nur die letzte Versionsnummer neuer ist als Ihre, also z. B. von 3.23.36 auf 3.23.44, wenn 3.23.44 die neueste Version des Zweigs ist). Wir haben uns innerhalb der Versions-Zweige bemüht, nur schwere Fehler zu beseitigen und kleine, relativ sichere Änderungen zu machen.

Als nächstes müssen Sie entscheiden, ob Sie eine Quelldistribution oder eine Binärdistribution nehmen wollen. In den meisten Fällen ist es ratsam, eine Binärdistribution zu nehmen, wenn eine für Ihre Plattform existiert, weil sich diese im Allgemeinen leichter installieren läßt als eine Quelldistribution.

In folgenden Fällen fahren Sie mit einer Quellinstallation wahrscheinlich besser:

  • Wenn Sie MySQL an einer ganz bestimmten Stelle installieren wollen. (Die Standard-Binärdistributionen sind an jeder Stelle lauffähig, aber vielleicht wollen Sie noch mehr Flexibilität haben.)
  • Um unterschiedlichen Bedürfnissen von Benutzern entgegen zu kommen, stellen wir zwei unterschiedliche Binärversionen zur Verfügung: Eine, die mit den nicht transaktionalen Tabellen-Handlern kompiliert ist (eine kleine, schnelle Binärdatei), sowie eine, die mit den wichtigsten erweiterten Optionen wie transaktionssicheren Tabellen kompiliert ist. Beide Versionen sind aus derselben Quelldistribution kompiliert. Alle nativen MySQL-Clients können sich mit beiden MySQL-Versionen verbinden. Die erweiterte MySQL-Binärdistribution ist mit dem -max-Suffix gekennzeichnet und ist mit denselben Optionen konfiguriert wie mysqld-max. See section 5.7.5 mysqld-max, ein erweiterter mysqld-Server. Wenn Sie das MySQL-Max-RPM benutzen wollen, müssen Sie zuerst das Standard-MySQL-RPM installieren.
  • Wenn Sie mysqld mit einigen zusätzlichen Features konfigurieren wollen, die NICHT in den Standard-Binärdistributionen enthalten sind. Hier ist eine Liste der gebräuchlichsten Zusatzoptionen, die Sie vielleicht nutzen wollen:
    • --with-berkeley-db
    • --with-innodb
    • --with-raid
    • --with-libwrap
    • --with-named-z-lib (ist in einigen Binärdateien enthalten)
    • --with-debug[=full]
  • Die vorgabemäßige Binärdistribution wird normalerweise mit Unterstützung für alle Zeichensätze kompiliert und sollte auf einer Vielzahl von Prozessoren derselben Prozessorfamilie laufen. Wenn Sie einen schnelleren MySQL-Server erhalten wollen, können Sie ihn erneut kompilieren und nur die Zeichensätze benutzen, die Sie brauchen. Sie können auch einen besseren Kompiler (wie pgcc) oder andere Kompilieroptionen benutzen, die besser auf Ihren Prozessor optimiert sind.
  • Wenn Sie einen Bug gefunden und dem MySQL-Entwicklungsteam mitgeteilt haben, werden Sie wahrscheinlich einen Patch erhalten, den Sie mit der Quelldistribution verwenden müssen, um den Bug zu beheben.
  • Wenn Sie den C- und C++-Code lesen (und / oder ändern) wollen, aus dem MySQL besteht, müssten Sie eine Quelldistribution laden. Der Quellcode ist immer das ''letzte Handbuch''. Quelldistributionen enthalten auch mehr Tests und Beispiele als Binärdistributionen.

Das MySQL Benennungsschema benutzt Release-Nummern, die aus drei Zahlen und einem Suffix bestehen. Ein Release-Name wie mysql-3.21.17-beta zum Beispiel wird wie folgt interpretiert:

  • Die erste Zahl (3) beschreibt das Dateiformat. Alle Version-3-Releases haben dasselbe Dateiformat.
  • Die zweite Zahl (21) ist die Release-Ebene (Level). Normalerweise kann man hier zwischen zweien auswählen. Einer ist der stabile Zweig des Releases (aktuell 23), der andere ist der Entwicklungs-Zweig (aktuell 4.0). Normalerweise sind beide stabil, aber die Entwicklungsversion kann Macken oder fehlende Dokumentation neuer Features haben oder sich auf einigen Systemen nicht kompilieren lassen.
  • Die dritte Zahl (17) ist die Versionsnummer innerhalb der Release-Ebene. Diese wird für jede neue Distribution hochgezählt. Üblicherweise werden Sie die neueste Version der Release-Ebene einsetzen wollen, die Sie gewählt haben.
  • Das Suffix (beta) zeigt den Stabilitätsgrad des Releases an. Mögliche Suffixe sind:
    • alpha zeigt an, dass das Release größere Abschnitte von neuem Code enthält, der noch nicht zu 100% getestet wurde. Bekannte Bugs (üblicherweise gibt es keine) sind im News-Abschnitt dokumentiert. See section D MySQL-Änderungsverlauf (Change History). In den meisten Alpha-Releases gibt es neue Befehle und Erweiterungen. Bei einem Alpha-Release können durch aktive Weiterentwicklung größere Code-Änderungen vorkommen, aber alles wird getestet, bevor ein Release veröffentlicht wird. Es sollte in keinem MySQL-Release bekannte Bugs geben.
    • beta bedeutet, dass jeglicher neue Code getestet wurde. Es wurden keine neuen Features hinzugefügt, die bei altem Code Probleme verursachen könnten. Es sollte keine bekannten Bugs geben. Eine Version wird von Alpha auf Beta gesetzt, wenn innerhalb der Alpha-Version mindestens einen Monat lang keine schweren Fehler mehr berichtet wurden. Wir planen für eine solche Version dann keine neuen Features mehr, die einen alten Befehl unzuverlässiger machen könnten.
    • gamma ist eine Beta-Version, die eine ganze Weile draussen war und offensichtlich gut funktioniert. Nur kleinere Problembehebungen wurden hinzugefügt. So etwas nennen viele andere Unternehmen ein Release.
    • Wenn eine Version kein Suffix besitzt, bedeutet das, dass diese Version schon eine ganze Weile auf vielen unterschiedlichen Sites eingesetzt wird, wobei keine Bugs ausser plattformspezifischen Bugs berichtet wurden. Für ein solches Release werden nur kritische Fehlerbehebungen durchgeführt. So etwas nennen wir ein stabiles Release.

Alle Versionen von MySQL laufen durch unsere Standard-Tests und -Benchmarks, um sicherzustellen, dass man sie relativ sicher benutzen kann. Weil die Standard-Tests im Laufe der Zeit erweitert werden, um auf alle früher gefundenen Bugs zu prüfen, wird die Test-Suite immer besser.

Beachten Sie, dass alle Releases mindestens wie folgt getestet wurden:

Mit der internen Test-Suite
Diese ist Teil unseres Produktionssystems für einen Kunden. Sie besitzt viele Tabellen mit Hunderten Megabytes an Daten.
Mit der MySQL-Benchmark-Suite
Diese läßt eine Reihe gebräuchlicher Anfragen laufen. Das ist zusätzlich ein Test darauf, ob die letzten Optimierungen den Code tatsächlich schneller gemacht haben. See section 6.1.4 Die MySQL-Benchmark-Suite.
Mit dem crash-me-Test
Dieser Test versucht festzustellen, welche Features die Datenbank unterstützt und was ihre Fähigkeiten und Beschränkungen sind. See section 6.1.4 Die MySQL-Benchmark-Suite.

Ein weiterer Test besteht darin, dass wir die neueste MySQL-Version in unserer internen Entwicklungsumgebung einsetzen, mindestens auf einer Maschine. Wir arbeiten hierbei mit mehr als 100 Gigabytes an Daten.

3.2.4 Installationslayouts

Dieser Abschnitt beschreibt das vorgabemäßige Layout der Verzeichnisse, die durch die Installation von Binär- und Quelldistributionen angelegt werden.

Eine Binärdistribution wird installiert, indem sie an die Installationsstelle entpackt wird, die Sie auswählen (typischer Weise `/usr/local/mysql'). Die Installation erstellt folgende Verzeichnisse an dieser Stelle:

Verzeichnis Verzeichnisinhalt
`bin' Client-Programme und der mysqld-Server
`data' Log-Dateien, Datenbanken
`include' Include-(Header)-Dateien
`lib' Bibliotheken
`scripts' mysql_install_db
`share/mysql' Dateien mit Fehlernachrichten
`sql-bench' Benchmarks

Eine Quelldistribution wird installiert, nachdem Sie sie konfiguriert und kompiliert haben. Vorgabemäßig werden Dateien unter `/usr/local' installiert, und zwar in den folgenden Unterverzeichnissen:

Verzeichnis Verzeichnisinhalt
`bin' Client-Programme und -Skripte
`include/mysql' Include-(Header)-Dateien
`info' Dokumentation im Info-Format
`lib/mysql' Bibliotheken
`libexec' Der mysqld-Server
`share/mysql' Dateien mit Fehlernachrichten
`sql-bench' Benchmarks und crash-me-Test
`var' Datenbanken und Log-Dateien

Innerhalb eines Installationsverzeichnisses weicht das Layout einer Quellinstallation von dem einer Binärinstallation wie folgt ab:

  • Der mysqld-Server wird in das `libexec'-Verzeichnis installiert und nicht in das `bin'-Verzeichnis.
  • Das Daten-Verzeichnis ist `var' und nicht `data'.
  • mysql_install_db wird in das `/usr/local/bin' Verzeichnis installiert und nicht in `/usr/local/mysql/Skripts'.
  • Die Header-Datei und Bibliotheksverzeichnisse sind `include/mysql' und `lib/mysql' und nicht `include' und `lib'.

Sie können Ihre eigene Binärinstallation aus einer kompilierten Quelldistribution erzeugen, indem Sie das Skript `Skripts/make_binary_Distribution' ausführen.

3.2.5 Wann und wie Updates veröffentlicht werden

MySQL entwickelt sich ziemlich schnell hier bei MySQL AB und wir wollen, dass andere MySQL-Benutzer daran teilhaben. Wir versuchen, immer dann ein neues Release heraus zu bringen, wenn wir sehr nützliche Features haben, für die offensichtlich ein Bedarf besteht.

Auch versuchen wir, unseren Benutzern zu helfen, wenn Sie nach Features anfragen, die einfach zu implementieren sind. Wir notieren, was unsere lizensierten Nutzer haben wollen, und insbesondere, was unsere Benutzer mit erweitertem E-Mail-Support haben wollen, und versuchen ihnen, eben das zu bieten.

Niemand muss einen neuen Release herunter laden. Im News-Abschnitt steht stets, ob das neue Release etwas beinhaltet, was Sie wirklich brauchen. See section D MySQL-Änderungsverlauf (Change History).

Wenn wir MySQL aktualisieren, fahren wir folgende Politik:

  • Bei kleineren Updates wird die letzte Zahl (von rechts) in der Versionsnummer herauf gezählt (Minor Release). Wenn es größere neue Features gibt oder kleinere Inkompatibilitäten mit vorherigen Versionen, wird die zweite Zahl der Versionsnummer herauf gezählt (Major Release). Wenn sich das Dateiformat ändert, wird die erste Zahl herauf gezählt.
  • have to do with "small bugs" => minor releases? Stable tested releases are meant to appear about 1-2 times a year, but if small bugs are found, a release mit only bug fixes will be released. Als stabil getestete Releases sollten etwa ein- bis zweimal im Jahr erscheinen, aber wenn kleinere Fehler gefunden werden, wird nur ein Release mit Bug-Fixes heraus gegeben.
  • Funktionierende Releases sollten etwa alle 1 bis 8 Wochen erscheinen.
  • Binärdistributionen für einige Plattformen werden von uns für größere Releases (Major) heraus gegeben. Andere Leute stellen vielleicht auch Binärdistributionen für andere Systeme her, aber nicht so häufig.
  • Patches stellen wir üblicherweise zur Verfügung, sobald wir kleinere Bugs ausfindig gemacht und behoben haben.
  • Für nicht kritische, aber störende Bugs machen wir Patches verfügbar, wenn sie uns zugesandt werden. Ansonsten kombinieren wir mehrere davon in einem größeren Patch.
  • Wenn durch unglückliche Umstände ein Release einen schweren Fehler enthält, erstellen wir sobald wie möglich ein neues Release. Das würden wir auch gern bei anderen Unternehmen so sehen.

The current stable release ist Version 3.23; We have already moved active Entwicklung to Version 4.0. Bugs will still be fixed in the stable version. We don't believe in a complete freeze, as this also leaves out bug fixes und things that ``must be done.'' ``Somewhat frozen'' means that we may add small things that ``almost surely will not affect anything that's already working.''

3.2.6 MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden

Als Service stellen wir bei MySQL AB einen Satz von Binärdistributionen von MySQL zur Verfügung, die auf unserer Site kompiliert wurden oder auf Sites von Kunden, die uns freundlicherweise Zugang zu Ihren Maschinen gewährt haben.

Diese Distributionen werden mit Skripts/make_binary_distribution erzeugt und mit folgenden Kompilern und Optionen konfiguriert:

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 neuer
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
Linux 2.0.33 i386 mit pgcc 2.90.29 (egcs 1.0.3a)
CFLAGS="-O3 -mpentium -mstack-align-double" CXX=gcc CXXFLAGS="-O3 -mpentium -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with-extra-charsets=complex
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-charset=complex
SCO 3.2v5.0.4 i386 mit gcc 2.7-95q4
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
AIX 2 4 mit gcc 2.7.2.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
OSF1 V4.0 564 alpha mit gcc 2.8.1
CC=gcc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex
Irix 6.3 IP32 mit gcc 2.8.0
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --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

Wenn jemand optimalere Optionen für die obigen Konfigurationen hat, können diese jederzeit der Entwickler-Mailing-Liste unter internals@lists.mysql.com mitgeteilt werden.

RPM-Distributionen von MySQL-Version 3.22 wurden durch Benutzer beigesteuert. Ab Version 3.22 werden die RPMs von uns bei MySQL AB erzeugt.

Wenn Sie eine Debug-Version von MySQL kompilieren wollen, müssen Sie den oben genannten Kompilierzeilen --with-debug oder --with-debug=full hinzufügen und jegliche -fomit-frame-pointer-Optionen entfernen.

3.3 Installation der Quelldistribution

Bevor Sie mit der Quellinstallation fortfahren, sehen Sie nach, ob eine Binärdistribution für Ihre Plattform verfügbar ist, die so wie Sie wollen funktioniert. Wir geben uns viel Mühe, die Binärdistributionen mit den bestmöglichen Optionen zu bauen.

Sie benötigen folgende Werkzeuge, um MySQL aus der Quelldistribution zu bauen und zu installieren:

  • GNU gunzip, um die Distribution zu entpacken.
  • Ein vernünftiges tar, um die Distribution zu entpacken. Von GNU tar ist bekannt, dass es funktioniert. Sun tar ist dafür bekannt, dass es Probleme verursacht.
  • Einen funktionierenden ANSI-C++-Kompiler. gcc >= 2.95.2, egcs >= 1.0.2 oder egcs 2.91.66, SGI C++ und SunPro C++ sind einige der Kompiler, von denen bekannt ist, dass sie funktionieren. libg++ wird nicht benötigt, wenn Sie gcc benutzen. gcc 2.7.x hat einen Bug, der es verunmöglicht, einige perfekt der vorgeschriebenen Form entsprechende C++-Dateien zu kompilieren, zum Beispiel `sql/sql_base.cc'. Wenn Sie nur gcc 2.7.x zur Verfügung haben, müssen Sie Ihren gcc aktualisieren, um MySQL kompilieren zu können. gcc 2.8.1 ist ebenfalls für Probleme auf einigen Plattformen bekannt, daher sollten Sie auch diesen vermeiden, wenn Sie einen neueren Kompiler für diese Plattform zur Verfügung haben. gcc >= 2.95.2 wird für das Kompilieren von MySQL-Versionen 3.23.x empfohlen.
  • Ein gutes make-Programm. GNU make wird stets empfohlen und ist manchmal erforderlich. Wenn Sie Probleme bekommen, empfehlen wir, es mit GNU make 3.75 oder neuer zu versuchen.

Wenn Sie eine aktuelle Version von gcc verwenden (aktuell genug, um die -fno-exceptions-Option zu verstehen), ist es SEHR WICHTIG, dass Sie diese Option benutzen. Ansonsten könnte es sein, dass Sie eine Binärdatei kompilieren, die zu zufälligen Zeitpunkten abstürzt. Wir empfehlen zusätzlich, dass Sie -felide-contructors und -fno-rtti zusammen mit -fno-exceptions benutzen. Im Zweifel gehen Sie wie folgt vor:

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

Für die meisten Systeme werden Sie dadurch eine schnelle, stabile Binärinstallation erhalten.

Wenn Sie Probleme bekommen, BITTE BENUTZEN SIE IMMER mysqlbug zum Fragenstellen die Liste mysql@lists.mysql.com. Selbst wenn das Problem kein Bug ist, sammelt mysqlbug Systeminformationen, die anderen helfen werden, Ihr Problem zu lösen. Wenn Sie mysqlbug nicht benutzen, verringern Sie die Möglichkeit, eine Lösung Ihres Problems zu bekommen! mysqlbug finden Sie im `scripts'-Verzeichnis, nachdem Sie die Distribution entpackt haben. See section 2.6.2.3 Wie man Bugs oder Probleme berichtet.

3.3.1 Schnellinstallation, Überblick

Die grundlegenden Befehle, die Sie ausführen müssen, um eine MySQL-Quelldistribution zu installieren, sind:

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

Wenn Sie Unterstützung für InnoDB-Tabellen haben wollen, sollten Sie die Datei /etc/my.cnf editieren und die `#'-Zeichen vor den Parametern entfernen, der mit innodb_... beginnen. See section 5.1.2 my.cnf-Optionsdateien. See section 8.5.2 Mit InnoDB anfangen - Optionen.

Wenn Sie mit einem Quell-RPM anfangen, gehen Sie wie folgt vor:

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

Das erzeugt ein Binär-RPM, das Sie installieren können.

Sie können neue Benutzer hinzufügen, indem Sie das bin/mysql_setpermission-Skript benutzen, falls Sie die DBI- und Msql-Mysql-modules-Perl-Module installieren.

Eine detailliertere Beschreibung folgt.

Um eine Quelldistribution zu installieren, führen Sie die unten stehenden Schritte aus und gehen dann weiter zu section 3.4 Einstellungen und Tests nach der Installation, um die Schritte nach der Installation und ein paar Tests durchzuführen.

  1. Wählen Sie das Verzeichnis, in dem Sie die Distribution entpacken wollen, und wechseln Sie dort hinein.
  2. Holen Sie sich eine Distributionsdatei von einer der Sites, die unter section 3.2.1 Wie man MySQL erhält aufgelistet sind.
  3. Wenn Sie Berkeley-DB-Tabellen mit MySQL verwenden wollen, müssen Sie sich eine gepatchte Version des Berkeley-DB-Quellcodes besorgen. Bitte lesen Sie das Kapitel über Berkeley-DB-Tabellen, bevor Sie fortfahren. See section 8.6 BDB- oder Berkeley_db-Tabellen. MySQL-Quelldistributionen stehen als komprimierte tar-Archive zur Verfügung und haben Namen wie `mysql-VERSION.tar.gz', wobei VERSION eine Zahl ist, wie 4.1.1-alpha.
  4. Fügen Sie einen Benutzer (User) und eine Gruppe (Group) hinzu, unter dem / der mysqld laufen soll: shell> groupadd mysql shell> useradd -g mysql mysql Diese Befehle fügen den Benutzer mysql und die Gruppe mysql hinzu. Die Syntax für useradd und groupadd kann sich auf unterschiedlichen Unix-Systemen geringfügig unterscheiden. Die Befehle können adduser und addgroup heißen. Wenn Sie wollen, können Sie Benutzer und Gruppe auch anders nennen als mysql.
  5. Entpacken Sie die Distribution ins aktuelle Verzeichnis: shell> gunzip < /pfad/zu/mysql-VERSION.tar.gz | tar xvf - Dieser Befehl erzeugt ein Verzeichnis namens `mysql-VERSION'.
  6. Wechseln Sie in das oberste Verzeichnis der entpackten Distribution: shell> cd mysql-VERSION Beachten Sie, dass Sie aktuell MySQL aus diesem obersten Verzeichnis konfigurieren und bauen müssen. Sie können MySQL nicht in ein anderes Verzeichnis bauen.
  7. Konfigurieren Sie das Release und kompilieren Sie alles: shell> ./configure --prefix=/usr/local/mysql shell> make Wenn Sie configure laufen lassen, können Sie dabei einige Optionen angeben. Geben Sie ./configure --help ein, um eine Liste von Optionen zu erhalten. section 3.3.3 Typische configure-Optionen erörtert einige der nützlicheren Optionen. Wenn configure fehlschlägt und Sie sich wegen Hilfe an mysql@lists.mysql.com wenden, geben Sie bitte alle Zeilen aus `config.log' an, von denen Sie annehmen, dass sie bei der Problembehebung hilfreich sein könnten. Fügen Sie auch die letzten Zeilen der Ausgabe von configure hinzu, wenn configure abbricht. Schicken Sie den Bug-Bericht ein, indem Sie das mysqlbug-Skript benutzen. See section 2.6.2.3 Wie man Bugs oder Probleme berichtet. Wenn das Kompilieren fehlschlägt, sehen Sie unter section 3.3.5 Probleme beim Kompilieren? nach, was bei einer Reihe geläufiger Probleme hilft.
  8. Installieren Sie alles: shell> make install Eventuell müssen Sie diesen Befehl als root ausführen.
  9. Erzeugen Sie die MySQL-Berechtigungstabellen (Grant Tables, nur notwendig, wenn Sie MySQL noch nie vorher installiert haben): shell> scripts/mysql_install_db Beachten Sie, dass bei MySQL-Versionen vor Version 3.22.10 der MySQL-Server startet, wenn Sie mysql_install_db laufen lassen. Das gilt für neuere Versionen nicht mehr!
  10. Ändern Sie den Besitzer der Binärdateien zu root und den Besitzer des Daten-Verzeichnisses zu dem Benutzer, unter dem Sie mysqld laufen lassen wollen: shell> chown -R root /usr/local/mysql shell> chown -R mysql /usr/local/mysql/var shell> chgrp -R mysql /usr/local/mysql Der erste Befehl ändert die owner-Attribute der Dateien auf den Benutzer root, der zweite ändert die owner-Attribute des Daten-Verzeichnisses auf den Benutzer mysql und der dritte ändert die group-Attribute auf die Gruppe mysql.
  11. Wenn Sie die Unterstützung für die Perl-DBI/DBD-Schnittstelle hinzufügen wollen, sehen Sie unter section 9.2 MySQL-Perl-API nach.
  12. Wenn Sie wollen, dass MySQL automatisch startet, wenn Sie Ihre Maschine hoch fahren, kopieren Sie support-files/mysql.server an die Stelle, wo Ihr System seine Startdateien hat. Weitere Informationen finden Sie im support-files/mysql.server-Skript selbst sowie unter section 3.4.3 MySQL automatisch starten und anhalten.

Nachdem alles installiert wurde, sollten Sie Ihre Distribution initialisieren und testen:

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

Wenn dieser Befehl sofort mit mysqld daemon ended fehlschlägt, finden Sie einige Informationen dazu in der Datei `mysql-Daten-Verzeichnis/'hostname'.err'. Der wahrscheinliche Grund ist der, dass bereits ein anderer mysqld-Server läuft. See section 5.1.4 Viele MySQL-Server auf derselben Maschine laufen lassen.

See section 3.4 Einstellungen und Tests nach der Installation.

3.3.2 Wie man Patches anwendet

Manchmal erscheinen Patches auf der Mailing-Liste oder werden auf Patches-Bereich auf der MySQL-Website eingestellt.

Um einen Patch aus der Mailing-Liste anzuwenden, speichern Sie die Nachricht, in der der Patch enthalten ist, in eine Datei. Wechseln Sie dann ins oberste Verzeichnis Ihres MySQL-Source-Trees und geben Sie folgende Befehle ein:

shell> patch -p1 < patch-datei-name shell> rm config.cache shell> make clean

Patches von der FTP-Site werden als Klartextdateien (Plain Text) oder als mit gzip komprimierte Dateien distribuiert. Ein Klartext-Patch wenden Sie genau so an, wie oben für die Patches von der Mailing-Liste beschrieben. Um ein komprimiertes Patch anzuwenden, wechseln Sie ins oberste Verzeichnis Ihres MySQL-Source-Trees und geben Sie folgende Befehle ein:

shell> gunzip < patch-datei-name.gz | patch -p1 shell> rm config.cache shell> make clean

Nachdem Sie einen Patch angewendet haben, folgen Sie den Anweisungen für eine normale Installation vom Quellcode, indem Sie mit dem Schritt ./configure anfangen. Nach dem Schritt make install, starten Sie den MySQL-Server neu.

Es kann sein, dass Sie jeden laufenden Server anhalten müssen, bevor Sie make install laufen lassen können. (Das machen Sie mit mysqladmin shutdown.) Einige Systeme lassen es nicht zu, dass eine neue Programmversion installiert wird, wenn diese eine Version ersetzt, die momentan ausgeführt wird.

3.3.3 Typische configure-Optionen

Das configure-Skript gibt Ihnen in großem Umfang Kontrolle über die Konfigurationsmöglichkeiten Ihrer MySQL-Distribution. Typischerweise machen Sie das unter Verwendung der Optionen auf der configure-Kommandozeile. Sie können ausserdem configure beeinflussen, indem Sie bestimmte Umgebungsvariablen benutzen. See section F Umgebungsvariablen. Um eine Liste der Optionen zu erhalten, die configure unterstützt, geben Sie folgendes ein:

shell> ./configure --help

Einige der gebräuchlicheren configure-Optionen sind im Folgenden beschrieben:

  • Um nur die MySQL-Client Bibliotheken und Client-Programme und nicht den Server zu kompilieren, benutzen Sie die --ohne-server-Option: shell> ./configure --without-server Wenn Sie keinen C++-Kompiler haben, können Sie mysql nicht kompilieren (MySQL ist das einzige Client-Programm, das C++ erfordert). In diesem Fall können Sie den Code in configure entfernen, der auf den C++-Kompiler testet, und dann ./configure mit der --without-server-Option eingeben. Dieser Kompilierschritt wird nach wie vor versuchen, mysql zu bauen, aber Sie können alle Warnungen zu `mysql.cc' ignorieren. (Wenn make anhält, versuchen Sie make -k, um ihm mitzuteilen, dass es mit dem Rest des Builds fortfahren soll, auch wenn Fehler auftreten.)
  • Wenn Sie nicht wollen, dass Ihre Log-Dateien und Datenbankverzeichnisse unter `/usr/local/var' liegen, benutzen Sie ein configure-Kommando wie folgendes: shell> ./configure --prefix=/usr/local/mysql shell> ./configure --prefix=/usr/local \ --localstatedir=/usr/local/mysql/data Der erste Befehl ändert das Installationspräfix, so dass alles unter `/usr/local/mysql' statt unter `/usr/local' installiert wird. Der zweite Befehl bewahrt das vorgabemäßige Installationspräfix, aber überschreibt die vorgabemäßige Stelle für Datenbankverzeichnisse (normalerweise `/usr/local/var') und ändert sie zu /usr/local/mysql/data.
  • Wenn Sie Unix benutzen und wollen, dass der MySQL-Socket an anderer Stelle liegt als vorgabemäßig (normalerweise im Verzeichnis `/tmp' oder `/var/run'), benutzen Sie ein configure-Kommando wie folgendes: shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock Beachten Sie, dass die angegebene Datei mit einem absoluten Pfadnamen angegeben werden muss! Sie können den Speicherort von `mysql.sock' auch später noch ändern, indem Sie die MySQL Optionsdateien benutzen. See section A.4.5 Wie Sie die MySQL-Socket-Datei `/tmp/mysql.sock' schützen oder ändern.
  • Wenn Sie statisch gelinkte Programme kompilieren wollen (um zum Beispiel eine Binärdistribution zu machen, mehr Geschwindigkeit zu erhalten oder Probleme mit RedHat-Linux-Distributionen zu umgehen (Workaround)), geben Sie configure wie folgt ein: shell> ./configure --with-client-ldflags=-all-static \ --with-mysqld-ldflags=-all-static
  • Wenn Sie gcc benutzen und libg++ oder libstdc++ nicht installiert haben, können Sie configure mitteilen, gcc als Ihren C++-Kompiler zu benutzen: shell> CC=gcc CXX=gcc ./configure Wenn Sie gcc als C++-Kompiler benutzen, versucht dieser nicht, libg++ oder libstdc++ zu linken. Hier sind einige gebräuchliche Umgebungsvariablen, die man in Abhängigkeit vom verwendeten Kompiler setzen kann:
    gcc 2.7.2.1 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 newer 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 ziemlich optimale MySQL-Binärdatei, indem Sie die Optionen von weiter oben nutzen und die folgenden Optionen zur Konfigurationszeile hinzufügen: --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static Die komplette Konfigurationszeile würde also etwa wie folgt aussehen (für alle aktuellen gcc-Versionen): 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 Die Binärdistributionen, die wir auf der MySQL-Website unter http://www.mysql.com zur Verfügung stellen, sind allesamt mit voller Optimierung kompiliert und sollten daher für die meisten Benutzer perfekt sein. See section 3.2.6 MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden. Einiges können Sie noch fein justieren, um noch schnellere Binärdistributionen zu erhalten, aber das ist nur etwas für fortgeschrittene Benutzer. See section 6.5.3 Wie Kompilieren und Linken die Geschwindigkeit von MySQL beeinflusst. Wenn der Build fehlschlägt und Fehler produziert, die aussagen, dass Ihr Kompiler oder Linker nicht in der Lage ist, die gemeinsam benutzte (shared) Bibliothek `libmysqlclient.so.#' (`#' ist eine Versionsnummer) zu erzeugen, können Sie dieses Problem umgehen, indem Sie die --disable-shared-Option von configure benutzen. In diesem Fall baut configure keine gemeinsam benutzte libmysqlclient.so.#-Bibliothek.
  • Sie können MySQL so konfigurieren, dass keine DEFAULT-Spaltenwerte für Nicht-NULL-Spalten benutzt werden (also Spalten, bei denen nicht zulässig ist, dass sie NULL sind). Das führt dazu, dass INSERT-Statements einen Fehler erzeugen, ausser wenn ausdrücklich Werte für Spalten angegeben werden, die einen Nicht-NULL-Werte verlangen. Um die Benutzung von Vorgabewerten zu unterdrücken, geben Sie configure wie folgt ein: shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
  • Als Vorgabe benutzt MySQL den Zeichensatz ISO-8859-1 (Latin1). Um diesen Vorgabesatz zu ändern, benutzen Sie die --with-charset-Option: shell> ./configure --with-charset=CHARSET CHARSET kann einer der folgenden sein: 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. See section 5.6.1 Der für Daten und Sortieren benutzte Zeichensatz. Wenn Sie Zeichen zwischen Server und Client konvertieren wollen, sollten Sie sich den SET OPTION CHARACTER SET-Befehl ansehen. See section 6.5.6 SET-Syntax. Achtung: Wenn Sie Zeichensätze ändern, nachdem Sie irgend welche Tabellen angelegt haben, müssen Sie myisamchk -r -q über jede Tabelle laufen lassen, denn ansonsten könnten Ihre Indexe falsch sortiert werden. (Das kann passieren, wenn Sie MySQL installieren, ein paar Tabellen erzeugen und danach MySQL rekonfigurieren, so dass es einen anderen Zeichensatz benutzt, und dann neu installieren.) Mit der Option --with-extra-charset=LIST können Sie zusätzliche Zeichensätze definieren, die in den Server einkompiliert werden sollen. Hierbei ist LIST entweder eine Liste eines Zeichensatzes, die durch Leerzeichen getrennt ist, oder complex, um alle Zeichen einzuschließen, die nicht dynamisch geladen werden können, oder all, um alle Zeichensätze in die Binärdateien einzuschließen.
  • Um MySQL mit Debug-Code zu konfigurieren, benutzen Sie die --with-debug-Option: shell> ./configure --with-debug Das bewirkt, dass eine sichere Speicherzuweisung (Memory Allocator) eingeschlossen wird, die einige Fehler finden kann und die Ausgaben liefert, was passiert ist. See section E.1 Einen MySQL-Server debuggen.
  • Wenn Ihre Client-Programme Threads benutzen, müssen Sie zusätzlich eine Thread-sichere Version der MySQL-Client-Bibliothek mit der --enable-Thread-safe-client-configure-Option kompilieren. Hierdurch wird eine libmysqlclient_r-Bibliothek angelegt, mit der Sie Ihre threaded Applikationen linken können. See section 9.4.8 Wie man einen threaded Client herstellt.
  • Optionen, die zu bestimmten Systemen gehören, finden sich im systemspezifischen Abschnitt dieses Handbuchs. See section 3.2.2 Betriebssysteme, die von MySQL unterstützt werden.

3.3.4 Installation vom Entwicklungs-Source-Tree

VORSICHT: Sie sollten diesen Abschnitt nur lesen, wenn Sie daran interessiert sind, uns beim Testen von neuem Code zu helfen. Wenn Sie nur wollen, dass MySQL auf Ihrem System läuft, sollten Sie eine Standard-Distribution wählen (entweder eine Quell- oder eine Binärdistribution).

Um unseren aktuellsten Entwicklungs-Source-Tree zu bekommen, folgen Sie diesen Anweisungen:

  1. Laden Sie BitKeeper von http://www.bitmover.com/cgi-bin/download.cgi herunter. Sie benötigen Bitkeeper 2.0 oder neuer, um auf unser Repository zuzugreifen.
  2. Folgen Sie den Anweisungen, um BitKeeper zu installieren.
  3. Nachdem BitKeeper installiert ist, benutzen Sie diesen Befehl, um den MySQL-3.23-Branch zu klonen: shell> bk clone bk://mysql.bkbits.net/mysql-3.23 mysql-3.23 Um den 4.0-Branch zu klonen, benutzen Sie statt dessen diesen Befehl: shell> bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0 Um den 4.1-Branch zu klonen, benutzen Sie statt dessen diesen Befehl: shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1 Um den 5.0-Branch zu klonen, benutzen Sie statt dessen diesen Befehl: shell> bk clone bk://mysql.bkbits.net/mysql-5.0 mysql-5.0 Das erstmalige Herunterladen des Source-Trees kann eine Weile dauern, abhängig von Ihrer Verbindungsgeschwindigkeit. Bitte Geduld.
  4. Sie brauchen GNU autoconf, automake, libtool und m4, um die nächsten Befehle auszuführen. Wenn Sie in diesem Stadium seltsame Fehler erhalten, überprüfen Sie bitte, ob Sie wirklich libtool installiert haben! shell> cd mysql shell> bk -r edit shell> aclocal; autoheader; autoconf; automake; shell> ./configure # Geben Sie hier Ihre Lieblingsoptionen an shell> make Eine Sammlung unserer Standard-configure-Skripts befindet sich im `BUILD/' Unterverzeichnis. Wenn Sie faul sind, können Sie `BUILD/compile-pentium-debug' benutzen. Um für unterschiedliche Architekturen zu kompilieren, ändern Sie das Skript ab und entfernen die Flags, die Pentium-spezifisch sind.
  5. Wenn der Build fertig ist, lassen Sie make install laufen. Seien Sie damit vorsichtig auf Produktionsmaschinen, denn dieser Befehl kann Ihre Live-Release-Installation überschreiben! Wenn Sie eine weitere Installation von MySQL haben, empfehlen wir, dass Sie ./configure mit anderen Werten für die prefix-, tcp-port- und unix-socket-path-Optionen ausführen als die, die für Ihren Produktionsserver benutzt werden.
  6. Spielen Sie reichlich mit Ihrer neuen Installation herum und versuchen Sie, die neuen Features zum Absturz zu bringen. Fangen Sie an, indem Sie make test laufen lassen. See section 10.3.2 MySQL-Test-Suite.
  7. Wenn Sie bis zum make-Stadium gekommen sind und die Distribution sich nicht kompilieren läßt, berichten Sie das bitte an bugs@lists.mysql.com. Wenn Sie die letzten Versionen der erforderlichen GNU-Werkzeuge installiert haben und sie abstürzen, wenn Sie versuchen, Ihre Konfigurationsdateien zu verarbeiten, berichten Sie das bitte ebenfalls. Wenn Sie jedoch aclocal und einen Befehl nicht gefunden-Fehler erhalten, berichten Sie diesen nicht. Stellen Sie statt dessen sicher, dass alle notwendigen Werkzeuge installiert sind und dass Ihre PATH-Variable korrekt gesetzt ist, damit Ihre Shell diese finden kann.
  8. Nach der erstmaligen bk clone-Operation, um den Source-Tree zu erhalten, sollten Sie in regelmäßigen Abständen bk pull laufen lassen, um Aktualisierungen zu erhalten.
  9. Sie erhalten die Änderungen-Geschichte (Change History) des Trees mit allen Diffs, indem Sie bk sccstool benutzen. Wenn Sie seltsame Diffs sehen oder Code, zu dem Sie Fragen haben, zögern Sie nicht, uns eine E-Mail an internals@lists.mysql.com zu schicken. Auch wenn Sie meinen, eine bessere Idee zu haben, wie etwas gemacht werden sollte, schicken Sie uns eine E-Mail an dieselbe Adresse, mit einem Patch. bk diffs erzeugt ein Patch für Sie, nachdem Sie Änderungen am Quellcode durchgeführt haben. Wenn Sie keine Zeit haben, Ihre Idee zu kodieren, schicken Sie einfach eine Beschreibung.
  10. BitKeeper hat ein nettes Hilfe-Dienstprogramm, auf das Sie über bk helptool zugreifen können.

3.3.5 Probleme beim Kompilieren?

Alle MySQL-Programme lassen sich sauber ohne Warnungen auf Solaris mit gcc kompilieren. Auf anderen Systemen können Warnungen wegen Unterschieden in System-Include-Dateien auftreten. Siehe section 3.3.6 Anmerkungen zu MIT-pThreads wegen Warnungen, die auftreten können, wenn Sie MIT-pThreads verwenden. Wegen anderer Probleme sehen Sie bitte in der unten stehenden Liste nach.

Die Lösung für viele Probleme beinhaltet Rekonfigurieren. Wenn Sie rekonfigurieren müssen, beachten Sie Folgendes:

  • Wenn configure laufen gelassen wird, nachdem es schon einmal lief, benutzt es möglicherweise Informationen, die bei vorherigen Aufrufen gesammelt wurden. Diese Information wird in der Datei `config.cache' gespeichert. Wenn configure startet, sucht es diese Datei und liest ihren Inhalt, wenn sie existiert, unter der Annahme, dass diese Information immer noch stimmt. Diese Annahme ist falsch, wenn Sie rekonfigurieren.
  • Immer, wenn Sie configure laufen lassen, müssen Sie auch make laufen lassen, um erneut zu kompilieren. Sie werden jedoch einige alte Objektdateien vorheriger Builds entfernen wollen, denn diese wurden mit anderen Konfigurationsoptionen kompiliert.

Um zu verhindern, dass alte Konfigurationsinformationen oder Objektdateien benutzt werden, geben Sie vor dem erneuten Aufruf von configure folgende Befehle ein:

shell> rm config.cache shell> make clean

Alternativ können Sie auch make distclean laufen lassen.

Die unten stehende Liste beschreibt einige der Probleme, die beim Kompilieren von MySQL am häufigsten auftreten:

  • Wenn Sie Probleme beim Kompilieren von `sql_yacc.cc' erhalten, die den unten gezeigten ähneln, haben Sie wahrscheinlich keinen Arbeitsspeicher oder Swap-Platz (Auslagerungsdatei) mehr. Internal compiler error: Programm cc1plus got fatal signal 11 oder Out of virtual memory oder Virtual memory exhausted Das Problem liegt darin, dass gcc riesige Mengen von Arbeitsspeicher benötigt, um `sql_yacc.cc' mit Inline-Funktionen zu kompilieren. Versuchen Sie, configure mit der --with-low-memory-Option auszuführen: shell> ./configure --with-low-memory Diese Option veranlasst, dass -fno-inline zur Kompilierzeile hinzugefügt wird, wenn Sie gcc benutzen, bzw. -O0, wenn Sie etwas anderes benutzen. Sie sollten die --with-low-memory-Option selbst dann benutzen, wenn Sie glauben, so viel Arbeitsspeicher und Swap-Platz zu haben, dass Ihnen diese unmöglich ausgehen können. Das Problem wurde selbst auf Systemen mit großzügiger Hardware-Ausstattung beobachtet, und die --with-low-memory-Option behebt es üblicherweise.
  • Vorgabemäßig sucht configure c++ als Kompiler-Namen aus und GNU c++ linkt mit -lg++. Wenn Sie gcc benutzen, kann dieses Verhalten Probleme bei Konfigurationen wie dieser verursachen: configure: error: installation oder configuration problem: c++ compiler cannot create executables. Eventuell stoßen Sie beim Kompilieren auch auf Probleme, die mit g++, libg++ oder libstdc++ zu tun haben. Eine Ursache dieser Probleme liegt darin, dass Sie kein g++ haben dürfen, oder Sie dürfen g++ haben, aber nicht libg++ oder libstdc++. Schauen Sie in die `config.log'-Datei! Sie sollten die genaue Ursache enthalten, warum Ihr C++-Kompiler nicht funktioniert! Um dieses Problem zu umgehen, können Sie gcc als Ihren C++-Kompiler benutzen. Versuchen Sie, die Umgebungsvariable CXX auf "gcc -O3" zu setzen. Beispiel: shell> CXX="gcc -O3" ./configure Das funktioniert, weil gcc C++-Quellen genau so gut wie g++ kompiliert, aber vorgabemäßig weder libg++ noch libstdc++ linkt. Eine andere Möglichkeit, das Problem zu beheben, besteht natürlich darin, g++, libg++ und libstdc++ zu installieren.
  • Wenn Ihr Kompilieren mit Fehlern wie dem folgenden fehlschlägt, müssen Sie Ihre Version von make auf GNU make aktualisieren: making all in mit-pThreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment oder make:Datei `Makefile' line 18: Must be a separator (: oder pThread.h: No such file or directory Von Solaris und FreeBSD ist bekannt, dass sie problembehaftete make-Programme haben. GNU make Version 3.75 funktioniert bekanntermaßen.
  • Wenn Sie Flags definieren wollen, die von Ihrem C- oder C++-Kompiler benutzt werden, fügen Sie die Flags den CFLAGS- und CXXFLAGS-Umgebungsvariablen hinzu. Sie können auf diese Weise auch die Kompilernamen festlegen, indem Sie CC und CXX benutzen. Beispiel: shell> CC=gcc shell> CFLAGS=-O3 shell> CXX=gcc shell> CXXFLAGS=-O3 shell> export CC CFLAGS CXX CXXFLAGS Siehe section 3.2.6 MySQL-Binärdistributionen, die von MySQL AB kompiliert wurden: Eine Liste von Flag-Definitionen, die sich auf verschiedenen Systemen als nützlich erwiesen haben.
  • Wenn Sie einen Fehler wie den folgenden erhalten, müssen Sie Ihren gcc-Kompiler aktualisieren: client/libmysql.c:273: parse error before `__attribute__' gcc 2.8.1 funktioniert bekanntermaßen, aber wir empfehlen statt dessen gcc 2.95.2 oder egcs 1.0.3a.
  • Wenn Sie Fehler wie die unten stehenden erhalten, wenn Sie mysqld kompilieren, hat configure den Typ des letzten Arguments für 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 das zu beheben, editieren Sie die `config.h'-Datei (die von configure angelegt wird). Suchen Sie nach folgenden Zeilen: /* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXX Ändern Sie XXX zu size_t oder int, abhängig von Ihrem Betriebssystem. (Beachten Sie, dass Sie das jedes Mal tun müssen, wenn Sie configure laufen lassen, weil configure die Datei `config.h' neu erzeugt.)
  • Die `sql_yacc.cc'-Datei wird von `sql_yacc.yy' erzeugt. Normalerweise muss der Build-Prozess keine `sql_yacc.cc' erzeugen, weil MySQL schon mit einer fertig erzeugten Kopie daher kommt. Wenn Sie sie jedoch neu erzeugen müssen, könnten Sie folgenden Fehler erhalten: "sql_yacc.yy", line xxx fatal: default action causes potential... Das ist ein Indiz dafür, dass Ihre Version von yacc fehlerhaft ist. Sie müssen statt dessen wahrscheinlich bison (die GNU-Version von yacc) installieren und benutzen.
  • Wenn Sie mysqld oder einen MySQL-Client debuggen wollen, lassen Sie configure mit der --with-debug-Option laufen. Kompilieren Sie danach neu und linken Sie Ihre Clients mit der neuen Client-Bibliothek. See section E.2 Einen MySQL-Client debuggen.

3.3.6 Anmerkungen zu MIT-pThreads

Dieser Abschnitt beschreibt einige der Themen im Zusammenhang mit MIT-pThreads.

Beachten Sie, dass Sie auf Linux KEINE MIT-pThreads benutzen, sondern statt dessen LinuxThreads installieren sollten! See section 3.6.1 Linux (alle Linux-Versionen).

Wenn Ihr System keine native Thread-Unterstützung bietet, müssen Sie MySQL unter Verwendung des MIT-pThread-Pakets bauen. Das betrifft ältere FreeBSD-Systeme, SunOS 4.x, Solaris 2.4 und früher und einige andere. See section 3.2.2 Betriebssysteme, die von MySQL unterstützt werden.

  • Auf den meisten Systemen können Sie die Benutzung von erzwingen, indem Sie configure mit der --with-mit-Threads-Option laufen lassen: shell> ./configure --with-mit-threads Wenn Sie MIT-pThreads benutzen, wird das Bauen (Building) in ein Nicht-Quellcode-Verzeichnis nicht unterstützt, weil wir die Änderungen an diesem Code minimal halten wollen.
  • Die Überprüfungen, die festlegen, ob MIT-pThreads benutzt werden sollten oder nicht, finden nur in dem Teil des Konfigurationsprozesses statt, der mit dem Server-Code zu tun hat. Wenn Sie die Distribution mit --without-server konfigurieren, um nicht den Client-Code zu bauen, wissen die Clients nicht, ob sie MIT-pThreads benutzen sollen oder nicht und werden vorgabemäßig Unix-Socket-Verbindungen benutzen. Weil Unix-Sockets unter MIT-pThreads nicht laufen, heißt das, dass Sie -h oder --host benutzen müssen, wenn Sie Client-Programme laufen lassen.
  • Wenn MySQL so kompiliert wird, dass es MIT-pThreads benutzt, wird System-Sperren (System Locking) vorgabemäßig aus Performance-Gründen ausgeschaltet. Mit der --use-locking-Option können Sie dem Server mitteilen, System-Sperren zu benutzen.
  • Manchmal schlägt der pThread-bind()-Befehl fehl und bindet nicht an ein Socket, ohne jede Fehlermeldung (zumindest auf Solaris). Als Ergebnis schlagen alle Verbindungen zum Server fehl. Beispiel: shell> mysqladmin version mysqladmin: connect to server at '' failed; error: 'Can't connect to mysql server on localhost (146)' Die Lösung besteht darin, den mysqld-Server zu killen und neu zu starten. Uns ist das nur dann passiert, wenn wir den Server gezwungen haben, herunter zu fahren und sofort danach einen Neustart durchgeführt haben.
  • Bei MIT-pThreads läßt sich der sleep()-Systemaufruf nicht mit SIGINT (break) unterbrechen. Das merken Sie nur, wenn Sie mysqladmin --sleep ausführen. Sie müssen dann warten, bis der sleep()-Aufruf beendet wurde, bevor die Unterbrechungsanforderung (Interrupt) bedient wird und der Prozess anhält.
  • Wenn Sie linken, erhalten Sie möglicherweise Warnmeldungen wie diese (zumindest auf Solaris). Sie können sie ignorieren: ld: warning: symbol `_iob' hat 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' hat 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
  • Einige weitere Warnungen können ebenfalls ignoriert werden: implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
  • Wir haben es bislang nicht geschafft, readline mit MIT-pThreads zum Laufen zu bringen. (Das wird zwar nicht benötigt, mag aber für einige interessant sein.)

3.3.6.1 Vorbereitung der Windows-Umgebung

3.3.7 Windows-Quelldistribution

Sie benötigen folgendes:

MySQL bauen

  1. Erzeugen Sie ein Arbeitsverzeichnis (z. B. workdir).
  2. Entpacken Sie die Quelldistribution in dieses Verzeichnis.
  3. Starten Sie den VC++-6.0-Kompiler.
  4. Wählen Sie im File-Menü Open Workspace.
  5. Öffnen Sie den `mysql.dsw'-Workspace, den Sie im Arbeitsverzeichnis finden.
  6. Wählen Sie im Build-Menü das Set Active Configuration- Menü.
  7. Wählen Sie mysqld - Win32 Debug und klicken Sie auf OK.
  8. Drücken Sie F7, um mit dem Bauen des Debug-Servers, der Bibliotheken und einiger Client-Applikationen zu beginnen.
  9. Wenn das Kompilieren beendet ist, kopieren Sie die Bibliotheken und die ausführbaren Dateien in ein separates Verzeichnis.
  10. Kompilieren Sie die Release-Versionen, die Sie haben wollen, auf dieselbe Art.
  11. Erzeugen Sie das Verzeichnis für die MySQL-Dateien, z. B. `c:\mysql'.
  12. Kopieren Sie aus dem Arbeitsverzeichnis folgende Verzeichnisse in das c:\mysql-Verzeichnis:
    • Data
    • Docs
    • Share
  13. Erzeugen Sie das Verzeichnis `c:\mysql\bin' und kopieren Sie alle Server und Clients, die Sie vorher kompiliert haben, hinein.
  14. Wenn Sie wollen, können Sie auch das `lib'-Verzeichnis erzeugen und die vorher kompilierten Bibliotheken hinein kopieren.
  15. Führen Sie mit Visual Studio ein Clean durch.

Konfigurieren und starten Sie den Server auf dieselbe Weise wie bei der Windows-Binärdistribution. See section 3.3.6.1 Vorbereitung der Windows-Umgebung.

3.4 Einstellungen und Tests nach der Installation

Wenn Sie MySQL erst einmal installiert haben (aus einer Binär- oder einer Quelldistribution), müssen Sie die Berechtigungstabellen (Grant Tables) initialisieren, den Server starten und sicherstellen, dass der Server korrekt funktioniert. Eventuell wollen Sie auch einrichten, dass der Server automatisch gestartet und angehalten wird, wenn Ihr System startet oder herunter gefahren wird.

Normalerweise installieren Sie die Berechtigungstabellen und starten den Server wie folgt: Bei der Installation einer Quelldistribution:

shell> ./scripts/mysql_install_db shell> cd mysql_installations_verzeichnis shell> ./bin/safe_mysqld --user=mysql &

Bei einer Binärdistribution (nicht RPM- oder pkg-Pakete) tun Sie folgendes:

shell> cd mysql_installations_verzeichnis shell> ./bin/mysql_install_db shell> ./bin/safe_mysqld --user=mysql &

Das legt die mysql-Datenbank an, die alle Zugriffsrechte auf Datenbanken enthält, die test-Datenbank, die Sie benutzen können, um MySQL zu testen und zusätzlich Berechtigungseinträge für den Benutzer, der mysql_install_db ausführt sowie einen root-Benutzer (ohne Passworte!). Durch den letzten Befehl wird der mysqld-Server gestartet.

mysql_install_db überschreibt keine alten Berechtigungstabellen, deshalb sollte es unter allen Umständen sicher sein. Wenn Sie die test-Datenbank nicht haben wollen, können Sie sie mit mysqladmin -u root drop test entfernen.

Am einfachsten läßt sich das Durchtesten vom obersten Verzeichnis der MySQL-Distribution durchführen. Bei einer Binärdistribution ist das Ihr Installationsverzeichnis (üblicherweise etwas wie `/usr/local/mysql'). Bei einer Quelldistribution ist es das Hauptverzeichnis Ihres MySQL-Source-Trees.

In den unten dargestellten Befehlen dieses Abschnitts und der folgenden Unterabschnitte ist BINDIR der Pfad zu dem Speicherort, wo Programme wie mysqladmin und safe_mysqld installiert sind. Bei einer Binärdistribution ist das `bin'-Verzeichnis innerhalb der Distribution. Bei einer Quelldistribution ist BINDIR wahrscheinlich `/usr/local/bin', es sei denn, Sie haben ein anderes Installationsverzeichnis als `/usr/local' angegeben, als Sie configure laufen ließen. EXECDIR ist der Speicherort, in dem der mysqld-Server installiert ist. Bei einer Binärdistribution ist das derselbe wie BINDIR. Bei einer Quelldistribution ist EXECDIR wahrscheinlich `/usr/local/libexec'.

Das Durchtesten wird im Folgenden detailliert beschrieben.

  1. Falls notwendig, starten Sie den mysqld-Server und richten die anfänglichen MySQL-Berechtigungstabellen ein, die alle Zugriffsrechte enthalten, die festlegen, wie sich Benutzer mit dem Server verbinden dürfen. Das wird normalerweise mit dem mysql_install_db-Skript gemacht: shell> scripts/mysql_install_db Typischerweise müssen Sie mysql_install_db nur laufen lassen, wenn Sie MySQL zum ersten Mal installieren. Wenn Sie eine existierende Installation aktualisieren (Update), können Sie deshalb diesen Schritt überspringen. (mysql_install_db ist jedoch ziemlich sicher und aktualisiert keine bereits existierenden Tabellen, daher können Sie im Zweifel immer mysql_install_db laufen lassen.) mysql_install_db erzeugt sechs Tabellen (user, db, host, tables_priv, columns_priv und func) in der mysql-Datenbank. Eine Beschreibung der anfänglichen Zugriffsrechte wird in section 5.2.5 Wie das Berechtigungssystem funktioniert festgelegt. Kurz gesagt erlauben diese Zugriffsrechte dem MySQL-Benutzer root, alles zu tun, und jedem, Datenbanken anzulegen oder zu benutzen, deren Name 'test' ist oder mit 'test_' beginnt. Wenn Sie die Zugriffsberechtigungstabellen (Grant Tables) nicht einrichten, wird folgender Fehler in der Logdatei erscheinen, wenn Sie den Server starten: mysqld: Can't find file: 'host.frm' Dasselbe kann auch bei einer MySQL-Binärdistribution passieren, wenn Sie MySQL nicht mit exakt ./bin/safe_mysqld starten! See section 5.7.2 safe_mysqld, der Wrapper um mysqld. Eventuell müssen Sie mysql_install_db als root laufen lassen. Wenn Sie wollen, können Sie jedoch den MySQL-Server als unprivilegierter (non-root)-Benutzer laufen lassen, vorausgesetzt, dieser Benutzer darf Dateien im Datenbank-Verzeichnis lesen und schreiben. Anweisungen, wie Sie MySQL als unprivilegierter Benutzer laufen lassen können, finden Sie in section 5.3.3 Wann Berechtigungsänderungen wirksam werden. Wenn Sie Probleme mit mysql_install_db bekommen, sehen Sie bitte unter section 3.4.1 Probleme mit mysql_install_db nach. Es gibt eine Reihe von Alternativen zum Laufenlassen des mysql_install_db-Skripts, was mit der MySQL-Distribution mitgeliefert wird:
    • Sie können mysql_install_db editieren, bevor Sie es laufen lassen, um die anfänglichen Zugriffsrechte zu ändern, die in die Rechtetabellen installiert werden. Das ist nützlich, wenn Sie MySQL auf einer großen Zahl von Maschinen mit denselben Zugriffsrechten installieren wollen. In diesem Fall müssen Sie wahrscheinlich nur ein paar zusätzliche INSERT-Statements für die mysql.user- und mysql.db-Tabellen hinzufügen!
    • Wenn Sie Dinge in den Berechtigungstabellen ändern wollen, nachdem diese installiert wurden, lassen Sie mysql_install_db laufen und geben dann den Befehl mysql -u root mysql ein, um sich als MySQL-root-Benutzer mit den Berechtigungstabellen zu verbinden. Danach können Sie SQL-Statements eingeben, um die Tabellen direkt zu verändern.
    • Es ist möglich, die Berechtigungstabellen komplett neu zu erzeugen, nachdem Sie angelegt wurden. Das werden Sie zum Beispiel tun wollen, wenn Sie die Tabellen bereits angelegt haben, Sie nun aber neu anlegen wollen, weil Sie mysql_install_db editiert haben.
    Zu weiteren Informationen über diese Alternativen siehe section 5.2 Allgemeine Sicherheitsthemen und das MySQL-Zugriffsberechtigungssystem.
  2. Starten Sie den MySQL-Server wie folgt: shell> cd mysql_installations_verzeichnis shell> bin/safe_mysqld & Wenn Sie Probleme haben, den Server zu starten, sehen Sie unter section 3.4.2 Probleme mit dem Start des MySQL-Servers nach.
  3. Benutzen Sie mysqladmin, um sicherzustellen, dass der Server läuft. Die folgenden Befehle sind ein einfacher Test, um zu überprüfen, ob der Server läuft und auf Verbindungen reagiert: shell> BINDIR/mysqladmin version shell> BINDIR/mysqladmin variables Die Ausgabe von mysqladmin version kann geringfügig variieren, abhängig von Ihrer Plattform und der Version von MySQL, sollte aber etwa wie folgt aussehen: shell> BINDIR/mysqladmin version mysqladmin Ver 8.14 Distrib 3.23.32, for linux on i586 Copyright (C) 2000 MySQL AB & MySQL Finnland AB & TCX DataKonsult AB This software comes mit ABSOLUTELY NO WARRANTY. This ist free software, und you are welcome to modify und redistribute it under the GPL license Server version 3.23.32-debug Protokoll version 10 Connection Localhost via Unix socket TCP port 3306 UNIX socket /tmp/mysql.sock Uptime: 16 sec Threads: 1 Questions: 9 Slow queries: 0 Opens: 7 Flush tables: 2 Open tables: 0 Queries per second avg: 0.000 Memory in use: 132K Max memory used: 16773K Um ein Gefühl dafür zu bekommen, was Sie sonst noch mit BINDIR/mysqladmin tun können, rufen Sie es mit der --help-Option auf.
  4. Stellen Sie sicher, dass Sie den Server herunter fahren können: shell> BINDIR/mysqladmin -u root shutdown
  5. Stellen Sie sicher, dass Sie den Server erneut starten können. Tun Sie das unter Benutzung von safe_mysqld oder indem Sie mysqld direkt aufrufen. Beispiel: shell> BINDIR/safe_mysqld --log & Wenn safe_mysqld fehlschlägt, versuchen Sie, es vom MySQL-Installationsverzeichnis aus zu starten (falls Sie noch nicht dort sind). Wenn das nicht funktioniert, sehen Sie unter see section 3.4.2 Probleme mit dem Start des MySQL-Servers nach.
  6. Lassen Sie ein paar einfache Tests ablaufen um sicherzustellen, dass der Server funktioniert. Die Ausgabe sollte ähnlich der folgenden sein: shell> BINDIR/mysqlshow +-----------+ | Databases | +-----------+ | mysql | +-----------+ shell> BINDIR/mysqlshow mysql Datenbank: mysql +--------------+ | Tables | +--------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +--------------+ shell> BINDIR/mysql -e "select host,db,user from db" mysql +------+--------+------+ | host | db | user | +------+--------+------+ | % | test | | | % | test_% | | +------+--------+------+ Zusätzlich gibt es eine Benchmark-Suite im `sql-bench'-Verzeichnis (unterhalb des MySQL-Installationsverzeichnisses), die Sie benutzen können, um die Leistungsdaten von MySQL auf verschiedenen Plattformen zu vergleichen. Das `sql-bench/Results'-Verzeichnis enthält die Ergebnisse vieler Testläufe mit verschiedenen Datenbanken und Plattformen. Um alle Tests durchzuführen, geben Sie folgende Befehle ein: shell> cd sql-bench shell> run-all-tests Wenn Sie kein `sql-bench'-Verzeichnis haben, benutzen Sie wahrscheinlich ein RPM für eine Binärdistribution. (Quelldistributions-RPMs beinhalten das Benchmark-Verzeichnis.) In diesem Fall müssen Sie die Benchmark-Suite zuerst installieren, bevor Sie sie benutzen können. Ab MySQL Version 3.22 gibt es Benchmark-RPM-Dateien, die `mysql-bench-VERSION-i386.rpm' benannt sind, die Benchmark-Code und Daten enthalten. Wenn Sie eine Quelldistribution haben, können Sie auch die Tests im `tests'-Unterverzeichnis ausführen. Um beispielsweise `auto_increment.tst' auszuführen, geben Sie folgendes ein: shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst Die Ergebnisse stehen dann in der `./tests/auto_increment.res'-Datei.

3.4.1 Probleme mit mysql_install_db

Der Zweck des mysql_install_db-Skripts ist, neue MySQL-Berechtigungstabellen zu erzeugen. Es betrifft keine anderen Daten! Es tut nichts, wenn Sie bereits MySQL-Berechtigungstabellen installiert haben!

Wenn Sie Ihre Berechtigungstabellen neu erzeugen wollen, sollten Sie den mysqld-Server herunter fahren, falls er läuft, und dann etwas Ähnliches wie folgendes tun:

mv mysql-data-verzeichnis/mysql mysql-data-verzeichnis/mysql-old mysql_install_db

Dieser Abschnitt listet Probleme auf, denen Sie vielleicht begegnen, wenn Sie mysql_install_db laufen lassen:

mysql_install_db installiert die Berechtigungstabellen nicht.
Eventuell stellen Sie fest, dass mysql_install_db bei der Installations der Berechtigungstabellen fehlschlägt und mit folgenden Meldungen endet: starting mysqld daemon with databases from XXXXXX mysql daemon ended In diesem Fall sollten Sie einen gründlichen Blick in die Log-Datei werfen! Diese sollte sich im Verzeichnis `XXXXXX' befinden, das in der Fehlermeldung ausgegeben wird, und sollte anzeigen, warum mysqld nicht startete. Wenn Sie nicht verstehen, was passiert ist, schicken Sie einen Bug-Bericht inklusive Log. Benutzen Sie hierfür mysqlbug! See section 2.6.2.3 Wie man Bugs oder Probleme berichtet.
Es läuft bereits ein mysqld-Daemon.
In diesem Fall müssen Sie wahrscheinlich mysql_install_db überhaupt nicht starten. Sie müssen mysql_install_db nur einmal starten, und zwar, wenn Sie MySQL zum ersten Mal installieren.
Die Installation eines zweiten mysqld-Daemons schlägt fehl,
wenn bereits ein Daemon läuft. Das kann vorkommen, wenn Sie bereits eine existierende MySQL-Installation haben, aber eine neue Installation an einem anderen Speicherort unterbringen wollen (zum Beispiel für Testzwecke, oder vielleicht wollen Sie auch einfach zwei Installationen zugleich laufen lassen. Im Allgemeinen ist der Grund für das Problem, wenn Sie versuchen, den zweiten Server laufen zu lassen, dass der zweite Server versucht, denselben Socket und Port wie der alte zu benutzen. In diesem Fall erhalten Sie als Fehlermeldung: Can't start server: Bind on TCP/IP port: Address already in use oder Can't start server : Bind on unix socket.... See section 5.1.4 Viele MySQL-Server auf derselben Maschine laufen lassen.
Sie haben keinen Schreibzugriff auf `/tmp'.
Wenn Sie keinen Schreibzugriff haben, um eine Socket-Datei am vorgabemäßigen Ort anzulegen (in `/tmp') oder keine Berechtigung, um temporäre Dateien in `/tmp' anzulegen, erhalten Sie einen Fehler, wenn Sie mysql_install_db laufen lassen oder starten oder wenn Sie mysqld benutzen. So können Sie einen anderen Socket und ein anderes temporäres Verzeichnis festlegen: shell> TMPDIR=/irgendein_temporaeres_verzeichnis/ shell> MYSQL_UNIX_PORT=/irgendein_temporaeres_verzeichnis/mysqld.sock shell> export TMPDIR MYSQL_UNIX_PORT See section A.4.5 Wie Sie die MySQL-Socket-Datei `/tmp/mysql.sock' schützen oder ändern. `irgendein_temporaeres_verzeichnis' sollte der Pfad zu einem Verzeichnis sein, für das Sie Schreibberechtigung haben. See section F Umgebungsvariablen. Danach sollten Sie in der Lage sein, mysql_install_db laufen zu lassen und den Server zu starten, und zwar mit folgenden Befehlen: shell> scripts/mysql_install_db shell> BINDIR/safe_mysqld &
mysqld stürzt sofort ab
Wenn Sie RedHat Version 5.0 mit einer Version von glibc laufen lassen, die älter als 2.0.7-5 ist, sollten Sie sicherstellen, dass Sie alle glibc-Patches installiert haben! Darüber gibt es jede Menge Informationen in den MySQL-Mail-Archiven. Links zu den Mail-Archiven finden Sie online unter http://www.mysql.com/documentation/. Siehe auch section 3.6.1 Linux (alle Linux-Versionen). Sie können mysqld auch manuell starten, dabei die --skip-grant-tables-Option benutzen und dann die Berechtigungsinformationen selbst mit mysql eintragen: shell> BINDIR/safe_mysqld --skip-grant-tables & shell> BINDIR/mysql -u root mysql Von mysql aus geben Sie die SQL-Befehle ein, die in mysql_install_db stehen. Stellen Sie sicher, dass Sie danach mysqladmin flush-privileges oder mysqladmin reload laufen lassen, um dem Server mitzuteilen, die Berechtigungstabellen neu zu laden.

3.4.2 Probleme mit dem Start des MySQL-Servers

Wenn Sie Tabellen einsetzen werden, die Transaktionen unterstützen (InnoDB, BDB), sollten Sie zuerst eine my.cnf-Datei anlegen und die Startoptionen für die Tabellentypen setzen, die Sie einsetzen wollen. See section 8 MySQL-Tabellentypen.

Im allgemeinen starten Sie den mysqld-Server auf eine der drei folgenden Weisen:

  • Indem Sie mysql.server aufrufen. Dieses Skript wird hauptsächlich beim Systemstart und -herunterfahren eingesetzt. Es wird ausführlicher in section 3.4.3 MySQL automatisch starten und anhalten beschrieben.
  • Indem Sie safe_mysqld aufrufen. Dieses Skript versucht die korrekten Optionen für mysqld festzustellen und läßt den Server dann mit diesen Optionen laufen. See section 5.7.2 safe_mysqld, der Wrapper um mysqld.
  • Auf Windows NT sollten Sie mysqld wie folgt als Systemdienst starten: bin\mysqld-nt --install # MySQL als Systemdienst installieren Jetzt können Sie mysqld wie folgt starten / anhalten: NET START mysql NET STOP mysql Beachten Sie, dass Sie in diesem Fall keine weiteren Optionen für mysqld benutzen können! Sie können den Systemdienst wie folgt entfernen: bin\mysqld-nt --remove # MySQL als Systemdienst entfernen
  • Indem Sie mysqld direkt aufrufen.

Wenn der mysqld-Daemon hoch fährt, wechselt er in das Daten-Verzeichnis. Dort erwartet er, Log-Dateien und die (process ID)-Datei schreiben zu können. Ebenfalls erwartet er dort, Datenbanken zu finden.

Der Speicherort des Daten-Verzeichnisses wird zum Zeitpunkt des Kompilierens der Distribution fest verdrahtet. Wenn mysqld jedoch erwartet, das Daten-Verzeichnis irgendwo sonst als an der Stelle zu finden, wo es auf Ihrem System tatsächlich ist, funktioniert er nicht richtig. Wenn Sie Probleme mit fehlerhaften Pfaden haben, können Sie durch den Aufruf von mysqld mit der --help-Option herausfinden, welche Optionen mysqld erlaubt und was die vorgabemäßigen Pfad-Einstellung sind. Sie können die Vorgaben überschreiben, indem Sie die korrekten Pfadnamen als Kommandozeilen-Argumente für mysqld festlegen. (Diese Optionen können auch bei safe_mysqld benutzt werden.)

Normalerweise sollte es lediglich nötig sein, mysqld das Basis-Verzeichnis mitzuteilen, wo MySQL installiert ist. Das können Sie mit der Option --basedir machen. Zusätzlich können Sie --help benutzen, um die Auswirkung der Pfadänderungsoptionen zu überprüfen (beachten Sie, dass --help die letzte Option des mysqld-Befehls wein muss. Beispiel:

shell> EXECDIR/mysqld --basedir=/usr/local --help

Wenn Sie die Pfadeinstellungen erst einmal festgelegt haben, die Sie wollen, starten Sie den Server ohne die --help-Option