
Dieses Kapitel beschreibt, woher man MySQL bezieht und wie man MySQL installiert:
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.
Der MySQL-Server für Windows ist in zwei Distributionstypen erhältlich:
Im Allgemeinen sollten Sie die Binärdistribution benutzen.
Sie benötigen folgendes:
MAX_ROWS und
AVG_ROW_LENGTH zu benutzen. See section 7.5.3 CREATE TABLE-Syntax.
ZIP-Programm, um die Distributionsdatei zu entpacken.
ODBC mit dem MySQL-Server zu
verbinden, benötigen Sie zusätzlich den MyODBC-Treiber.
See section 9.3 MySQL-ODBC-Unterstützung.
C:\> NET STOP MySQLAnsonsten geben Sie folgendes ein:
C:\mysql\bin> mysqladmin -u root shutdown
C:\mysql\bin> mysqld-max-nt --remove
Durchsuchen das gewünschte Verzeichnis fest.
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.
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.
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:
glibc 2.0.7+. See section 3.6.1 Linux (alle Linux-Versionen).
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:
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.
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.
Zunächst müssen Sie entscheiden, ob Sie das letzte Entwicklungs-Release oder das letzte stabile Release benutzen wollen:
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:
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.
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]
pgcc) oder andere
Kompilieroptionen benutzen, die besser auf Ihren Prozessor optimiert sind.
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:
3) beschreibt das Dateiformat. Alle
Version-3-Releases haben dasselbe Dateiformat.
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.
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.
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 C 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.
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:
crash-me-Test
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.
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:
mysqld-Server wird in das `libexec'-Verzeichnis installiert
und nicht in das `bin'-Verzeichnis.
mysql_install_db wird in das `/usr/local/bin' Verzeichnis
installiert und nicht in `/usr/local/mysql/Skripts'.
Sie können Ihre eigene Binärinstallation aus einer kompilierten Quelldistribution erzeugen, indem Sie das Skript `Skripts/make_binary_Distribution' ausführen.
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 C MySQL-Änderungsverlauf (Change History).
Wenn wir MySQL aktualisieren, fahren wir folgende Politik:
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.''
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:
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
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
gcc 2.8.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex
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
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
gcc 2.7-95q4
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
gcc 2.7.2.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
gcc 2.8.1
CC=gcc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex
gcc 2.8.0
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
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.
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:
gunzip, um die Distribution zu entpacken.
tar, um die Distribution zu entpacken. Von GNU
tar ist bekannt, dass es funktioniert. Sun tar ist dafür
bekannt, dass es Probleme verursacht.
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.
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.
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.
tar-Archive zur
Verfügung und haben Namen wie `mysql-VERSION.tar.gz', wobei
VERSION eine Zahl ist, wie 5.0.1-alpha.
mysqld laufen soll:
shell> groupadd mysql shell> useradd -g mysql mysqlDiese 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.
shell> gunzip < /pfad/zu/mysql-VERSION.tar.gz | tar xvf -Dieser Befehl erzeugt ein Verzeichnis namens `mysql-VERSION'.
shell> cd mysql-VERSIONBeachten Sie, dass Sie aktuell MySQL aus diesem obersten Verzeichnis konfigurieren und bauen müssen. Sie können MySQL nicht in ein anderes Verzeichnis bauen.
shell> ./configure --prefix=/usr/local/mysql shell> makeWenn 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.
shell> make installEventuell müssen Sie diesen Befehl als
root ausführen.
shell> scripts/mysql_install_dbBeachten 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!
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/mysqlDer 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.
DBI/DBD-Schnittstelle
hinzufügen wollen, sehen Sie unter section 9.2 MySQL-Perl-API nach.
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.
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.
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 E 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:
--ohne-server-Option:
shell> ./configure --without-serverWenn 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.)
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.
configure-Kommando wie folgendes:
shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sockBeachten 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.
configure wie folgt ein:
shell> ./configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
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 ./configureWenn 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" |
--prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-staticDie 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-staticDie 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.
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
--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.
--with-debug-Option:
shell> ./configure --with-debugDas bewirkt, dass eine sichere Speicherzuweisung (Memory Allocator) eingeschlossen wird, die einige Fehler finden kann und die Ausgaben liefert, was passiert ist. See section D.1 Einen MySQL-Server debuggen.
--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.
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:
shell> bk clone bk://mysql.bkbits.net/mysql-3.23 mysql-3.23Um den 4.0-Branch zu klonen, benutzen Sie statt dessen diesen Befehl:
shell> bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0Um den 4.1-Branch zu klonen, benutzen Sie statt dessen diesen Befehl:
shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1Um den 5.0-Branch zu klonen, benutzen Sie statt dessen diesen Befehl:
shell> bk clone bk://mysql.bkbits.net/mysql-5.0 mysql-5.0Das erstmalige Herunterladen des Source-Trees kann eine Weile dauern, abhängig von Ihrer Verbindungsgeschwindigkeit. Bitte Geduld.
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> makeEine 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.
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.
make test laufen lassen. See section 10.3.2 MySQL-Test-Suite.
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.
bk clone-Operation, um den Source-Tree zu
erhalten, sollten Sie in regelmäßigen Abständen bk pull laufen
lassen, um Aktualisierungen zu erhalten.
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.
bk
helptool zugreifen können.
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:
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.
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:
Internal compiler error: Programm cc1plus got fatal signal 11 oder Out of virtual memory oder Virtual memory exhaustedDas 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-memoryDiese 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.
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" ./configureDas 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.
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 directoryVon Solaris und FreeBSD ist bekannt, dass sie problembehaftete
make-Programme haben.
GNU make Version 3.75 funktioniert bekanntermaßen.
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 CXXFLAGSSiehe 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.
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.
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.)
"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.
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 D.2 Einen MySQL-Client debuggen.
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.
configure mit der --with-mit-Threads-Option laufen lassen:
shell> ./configure --with-mit-threadsWenn 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.
--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.
--use-locking-Option können Sie dem Server
mitteilen, System-Sperren zu benutzen.
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.
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.
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
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
readline mit MIT-pThreads zum
Laufen zu bringen. (Das wird zwar nicht benötigt, mag aber für einige
interessant sein.)
Sie benötigen folgendes:
MySQL bauen
File-Menü Open Workspace.
Build-Menü das Set Active Configuration-
Menü.
mysqld - Win32 Debug und klicken Sie auf OK.
F7, um mit dem Bauen des Debug-Servers, der
Bibliotheken und einiger Client-Applikationen zu beginnen.
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.
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.
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_dbTypischerweise 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:
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!
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.
mysql_install_db editiert haben.
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.
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 variablesDie 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: 16773KUm 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.
shell> BINDIR/mysqladmin -u root shutdown
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.
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-testsWenn 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.tstDie Ergebnisse stehen dann in der `./tests/auto_increment.res'-Datei.
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.
mysql_install_db bei der
Installations der Berechtigungstabellen fehlschlägt und mit folgenden
Meldungen endet:
starting mysqld daemon with databases from XXXXXX mysql daemon endedIn 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.
mysqld-Daemon.
mysql_install_db überhaupt
nicht starten. Sie müssen mysql_install_db nur einmal starten, und
zwar, wenn Sie MySQL zum ersten Mal installieren.
mysqld-Daemons schlägt fehl,
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.
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_PORTSee 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 E 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
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 mysqlVon
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.
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:
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.
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.
mysqld wie folgt als Systemdienst
starten:
bin\mysqld-nt --install # MySQL als Systemdienst installierenJetzt können Sie
mysqld wie folgt starten / anhalten:
NET START mysql NET STOP mysqlBeachten 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
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.
Mit welcher Methode auch immer Sie den Server starten: Wenn er nicht
korrekt hoch fährt, untersuchen Sie die Log-Datei, um zu sehen, ob Sie den
Grund dafür herausfinden können. Log-Dateien liegen im Daten-Verzeichnis
(typischerweise `/usr/local/mysql/data' bei einer Binärdistribution,
`/usr/local/var' bei einer Quelldistribution und
`\mysql\data\mysql.err' unter Windows). Suchen Sie im Daten-Verzeichnis
nach Dateien mit Namen der Form `host_name.err' und
`host_name.log', wobei host_name der Name Ihres Server-Hosts
ist. Sehen Sie in den letzten paar Zeilen dieser Dateien nach:
shell> tail host_name.err shell> tail host_name.log
Wenn Sie etwas wie das Folgende in der Log-Datei finden:
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 --bdb-no-recover
gestartet haben und Berkeley DB findet, dass etwas mit seinen Log-Dateien
nicht in Ordnung ist, als es versuchte, Ihre Datenbanken
wiederherzustellen. Um weitermachen zu können, sollten Sie alle alten
Berkeley-DB-Log-Dateien aus dem Datenbankverzeichnis an eine andere Stelle
verschieben, wo Sie sie später untersuchen können. Die Log-Dateien sind wie
`log.0000000001' benannt, wobei die Nummer im Zeitablauf hochgezählt
wird.
Wenn Sie mysqld mit BDB-Tabellenunterstützung laufen lassen und
mysqld beim Start einen Speicherauszug (Core Dump) liefert, könnte
das an Problemen mit den BDB-Wiederherstellungs-Logs liegen. In diesem Fall
können Sie versuchen, mysqld mit --bdb-no-recover zu starten.
Wenn das hilft, sollten Sie danach alle `log.*'-Dateien aus dem
Daten-Verzeichnis entfernen und versuchen, mysqld erneut zu starten.
Wenn Sie folgenden Fehler bekommen, bedeutet das, dass ein anderes Programm
(oder ein anderer mysqld-Server) bereits den TCP/IP-Port oder
-Socket benutzt, den mysqld versucht zu benutzen:
Can't start server: Bind on TCP/IP-Port: Address already in use oder Can't start server : Bind on unix socket...
Benutzen Sie ps, um sicherzustellen, dass kein weiterer
mysqld-Server läuft. Wenn Sie keinen weiteren Server finden, können
Sie den Befehl telnet ihr-host-name tcp-ip-port-nummer eingeben und
mehrere Male EINGABE drücken. Wenn Sie keine Fehlermeldung wie
telnet: Unable to connect to remote host: Connection refused
erhalten, benutzt irgend etwas anderes den TCP/IP-Port, den mysqld
versucht zu benutzen. Siehe section 3.4.1 Probleme mit mysql_install_db und section 5.1.4 Viele MySQL-Server auf derselben Maschine laufen lassen.
Wenn mysqld gerade läuft, können Sie herausfinden, welche
Pfadeinstellungen er benutzt, indem Sie folgenden Befehl ausführen:
shell> mysqladmin variables
oder
shell> mysqladmin -h 'ihr-host-name' variables
Wenn safe_mysqld hoch den Server hoch fährt, Sie sich aber nicht mit
ihm verbinden können, stellen Sie sicher, dass Sie einen Eintrag wie den
folgenden in `/etc/hosts' haben:
127.0.0.1 localhost
Dieses Problem tritt nur auf Systemen auf, die keine funktionierende Thread-Bibliothek besitzen, und für die MySQL so konfiguriert werden muss, dass es MIT-pThreads benutzt.
Wenn Sie es nicht schaffen, mysqld zu starten, können Sie versuchen,
eine Trace-Datei anzulegen, um das Problem zu finden. See section D.1.2 Trace-Dateien erzeugen.
Wenn Sie InnoDB-Tabellen benutzen, sehen Sie bei den InnoDB-spezifischen Startoptionen nach. See section 8.5.2 Mit InnoDB anfangen - Optionen.
Wenn Sie BDB-(Berkeley DB)-Tabellen benutzen, sollten Sie sich mit den verschiedenen Startoptionen von BDB vertraut machen. See section 8.6.3 BDB-Startoptionen.
Die mysql.server- und safe_mysqld-Skripte können benutzt
werden, um den Server automatisch beim Hochfahren des Systems zu starten.
mysql.server kann ebenfalls dazu benutzt werden, den Server
anzuhalten.
Das mysql.server-Skript kann benutzt werden, um den Server zu
starten oder anzuhalten, indem man es mit den start- oder
stop-Argumenten aufruft:
shell> mysql.server start shell> mysql.server stop
mysql.server liegt im `share/mysql'-Verzeichnis unterhalb des
MySQL-Installationsverzeichnisses oder im `support-files'-Verzeichnis
des MySQL-Source-Trees.
Bevor mysql.server den Server startet, wechselt es in das
MySQL-Installationsverzeichnis. Dann ruft es safe_mysqld auf.
Eventuell müssen Sie mysql.server editieren, wenn Sie eine
Binärdistribution haben, die Sie an eine nicht stardardmäßige Stelle
installiert haben. Ändern Sie es so ab, dass es in das richtige Verzeichnis
wechselt (cd), bevor es safe_mysqld startet. Wenn Sie wollen,
dass der Server unter einem bestimmten Benutzer läuft, fügen Sie eine
entsprechende user-Zeile zur `/etc/my.cnf'-Datei hinzu, so wie
weiter unten in diesem Abschnitt dargestellt.
mysql.server stop hält den Server an, indem es ihm ein Signal
sendet. Sie können den Server auch automatisch herunter fahren, indem Sie
mysqladmin shutdown ausführen.
Wenn Sie möchten, können Sie diese Start- und Stop-Befehle an den
entsprechenden Stellen Ihrer `/etc/rc*'-Dateien einfügen, wenn Sie
MySQL für Produktions-Applikationen benutzen. Beachten Sie, wenn Sie
mysql.server editieren und dann gelegentlich MySQL aktualisieren
(Update), dass dann Ihre geänderte Version überschrieben wird. Daher
sollten Sie eine Kopie Ihrer editierten Version machen, die Sie erneut
installieren können.
Wenn Ihr System `/etc/rc.local' benutzt, um externe Skripte zu starten, sollten Sie folgendes anhängen:
/bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld --user=mysql &'
Sie können Optionen für mysql.server in einer globalen
`/etc/my.cnf'-Datei hinzufügen. Eine typische `/etc/my.cnf'-Datei
sieht wie folgt aus:
[mysqld] datadir=/usr/local/mysql/var socket=/var/tmp/mysql.sock port=3306 user=mysql [mysql.server] basedir=/usr/local/mysql
Das mysql.server-Skript kennt folgende Optionen:
datadir, basedir und pid-file.
Folgende Tabelle zeigt, welche Optionsgruppen jedes der Startskripts aus den Optionsdateien liest:
| Skript | Optionsgruppen |
mysqld | mysqld und server
|
mysql.server | mysql.server, mysqld, und server
|
safe_mysqld | mysql.server, mysqld, und server
|
See section 5.1.2 my.cnf-Optionsdateien.
Sie können die MySQL-form- und data-Dateien jederzeit für verschiedene
Versionen auf derselben Architektur benutzen, solange Sie dieselbe
Grundversion von MySQL haben. Die aktuelle Grundversion ist 3. Wenn Sie den
Zeichensatz ändern, während MySQL läuft (was auch die Sortierreihenfolge
betreffen kann), müssen Sie myisamchk -r -q auf alle Tabellen
ausführen. Ansonsten könnte es sein, dass Ihre Indexe nicht korrekt
sortiert werden.
Wenn Sie vor neuen Versionen zurück schrecken, können Sie Ihren alten
mysqld zu etwas wie mysqld-'alte-versions-nummer' umbenennen.
Wenn Ihr neuer mysqld dann etwas Unerwartetes tut, können Sie ihn
einfach anhalten und mit Ihrem alten mysqld neu starten!
Wenn Sie ein Upgrade vornehmen, sollte Sie natürlich Ihre alten Datenbanken sichern.
Wenn Sie nach einem Upgrade auf Probleme mit neu kompilierten
Client-Programmen stoßen, zum Beispiel Commands out of sync oder
unerwartete Speicherauszüge (Core Dumps), haben sie wahrscheinlich einen
alten Header oder eine alte Bibliotheksdatei benutzt, als Sie die Programme
kompilierten. In diesem Fall sollten Sie das Datum Ihrer
`mysql.h'-Datei und `libmysqlclient.a'-Bibliothek überprüfen, um
sicherzustellen, dass sie aus der neuen MySQL-Distribution stammten. Wenn
nicht, kompilieren sie Ihre Programme bitte neu!
<