MySQL installieren

Dieser Teil des Tutorials beschreibt, wie man die Datenbank MySQL kompiliert und installiert, um sie später in TYPO3 nutzen zu können.

Den MySQL-Quellcode beziehen

Sofern Ihnen der Quellcode noch nicht vorliegt, können Sie ihn sich von der offiziellen MySQL-Website herunterladen.

Anschließend legen wir das Paket mit dem Quellcode im entsprechenden Verzeichnis ab: /opt/mysql/mysql-4.0.16.tar.gz. Danach entpacken wir das Source-Paket und erstellen unser Installationsverzeichnis. Das eigentliche Zielverzeichnis, in dem sich dann die kompilierte Datenbank befinden wird, erstellen wir später im Zuge des Kompiliervorgangs.

Quellcode von MySQL entpacken
linux:/ # cd /opt/mysql 
linux:/opt/mysql # tar xvfz mysql-4.0.16.tar.gz 
linux:/opt/mysql # mv mysql-4.0.16 mysql-4.0.16-install

Somit ist /opt/mysql/mysql-4.0.16-install unser Installationsverzeichnis. Das Zielverzeichnis für die kompilierte Datenbank wird später /opt/mysql/mysql-4.0.16 sein. (Dieses Schema wenden wir analog bei den anderen Komponenten an.)

configure, make, make install

Zuerst konfigurieren wir unsere Installation. Bitte passen Sie die Version im Parameter --with-named-curses-libs=/lib/libncurses.so.x.y Ihrem System entsprechend an, also für .x.y beispielsweise .5.2 oder .5.3.

Aufruf von configure
linux:/ # cd /opt/mysql/mysql-4.0.16-install
linux:/opt/mysql/mysql-4.0.16-install # CFLAGS="-O3 -march=pentiumpro" CXX=gcc CXXFLAGS="-O3 -march=pentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/opt/mysql/mysql-4.0.16 --localstatedir=/opt/mysql/mysql-4.0.16/data --with-unix-socket-path=/opt/mysql/mysql-4.0.16/mysql.sock --with-mysqld-ldflags=-all-static --enable-assembler --enable-thread-safe-client --with-named-curses-libs=/lib/libncurses.so.5.3

Danach starten wir den Kompiliervorgang:

Kompilieren mit make
linux:/opt/mysql/mysql-4.0.16-install # make

Möglicher Fehler bei make

Nach dem Aufruf von make kann es vorkommen, dass der Kompilierungsvorgang abbricht und Fehlermeldungen der folgenden Art anzeigt:

Fehlermeldung bei make
libmysql.c: In function `mysql_real_connect': 
libmysql.c:1786: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer type 
libmysql.c:1786: error: too few arguments to function `gethostbyname_r' 
libmysql.c:1786: warning: assignment makes pointer from integer without a cast 
make[2]: *** [libmysql.lo] Error 1 
make[2]: Leaving directory `/opt/mysql/mysql-4.0.16-install/libmysql_r' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/opt/mysql/mysql-4.0.16-install' 
make: *** [all] Error 2

In diesem Fall müssen wir die Header-Datei config.h editieren, bevor wir make erneut starten. Dazu gehen wir folgendermaßen vor.

Zuerst bereinigen wir unsere fehlgeschlagene Kompilierung:

Bereinigen der Installation
linux:/opt/mysql/mysql-4.0.16-install # make clean

Danach editieren wir die Datei config.h, die sich in unserem Installationsverzeichnis befindet. In einem Editor Ihrer Wahl fügen Sie die fettgeschriebene Zeile ein. Möglicherweise ist diese Zeile bereits vorhanden und in Kommentare (/* ... */) eingeschlossen.

Editieren der Datei config.h
#define HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE 1
/* In OSF 4.0f the 3'd argument to gethostname_r is hostent_data * */
/* #undef HAVE_GETHOSTBYNAME_R_RETURN_INT */

Nachdem wir die Datei geändert und abgespeichert haben, starten wir make erneut:

Erneuter Aufruf von make
linux:/opt/mysql/mysql-4.0.16-install # make

Nun sollte die Kompilierung ohne weitere Probleme funktionieren.

Schließlich installieren wir das Paket:

Installieren mit make install
linux:/opt/mysql/mysql-4.0.16-install # make install

Initialisierung von MySQL

In diesem Schritt werden die grundlegenden Datenbanktabellen des MySQL-Systems erstellt. Dies erledigen wir durch den Aufruf eines mitgelieferten Skriptes im Installationsverzeichnis.

Datenbanktabellen erzeugen
linux:/opt/mysql/mysql-4.0.16-install # scripts/mysql_install_db

Start-/Stopp-Skript einrichten

Wir installieren das mitgelieferte Skript mysql.server, das den Start und den Stopp des MySQL-Servers übernimmt, nach /etc/init.d:

mysql.server Skript einbinden
linux:/opt/mysql/mysql-4.0.16-install # cd /opt/mysql
linux:/opt/mysql # cp mysql-4.0.16/share/mysql/mysql.server /etc/init.d/
linux:/opt/mysql # chkconfig --add mysql.server

Konfigurationsdatei my.cnf anpassen

Jetzt legen wir die MySQL-Konfigurationsdatei my.cnf im Verzeichnis /etc ab. Wir verwenden die mitgelieferte Datei my-medium.cnf als Ausgangsbasis ...

my.cnf nach /etc kopieren
linux:/opt/mysql # cp mysql-4.0.16/share/mysql/my-medium.cnf /etc/my.cnf

.. und passen diese Datei auf unsere Installation an, indem wir folgende Änderungen in der Datei /etc/my.cnf vornehmen: In der Sektion [mysqld] fügen wir die beiden ersten Zeilen ein und ergänzen die Datei anschließend noch um die Sektion [mysql.server]:

my.cnf ändern
[mysqld]
user = mysql
datadir = /opt/mysql/mysql-4.0.16/data
 
# ... weitere my.cnf Konfiguration ...
 
[mysql.server]
basedir = /opt/mysql/mysql-4.0.16

Benutzerrechte und Dateirechte für MySQL

Um mögliche Probleme zu vermeiden, erstellen wir einen symbolischen Link im MySQL-Standardverzeichnis, der auf unser Zielverzeichnis verweist:

Softlink erstellen
linux:/opt/mysql # ln -s /opt/mysql/mysql-4.0.16 /var/lib/mysql

Existiert der User mysql noch nicht auf Ihrem System, so erstellen wir ihn jetzt:

mysql-Benutzer erstellen
linux:/opt/mysql # useradd -d /var/lib/mysql -g 2 -s /bin/false -u 60 mysql

Anschließend erlauben wir dem User mysql Zugriff auf unser MySQL-Zielverzeichnis:

Benutzerrechte für mysql-Verzeichnis festlegen
linux:/opt/mysql # chown -R mysql mysql-4.0.16

Starten und Stoppen des MySQL-Servers

Nun sind alle Vorbereitungen getroffen und wir können den MySQL-Server zum ersten Mal starten:

Starten von MySQL
linux:/opt/mysql # /etc/init.d/mysql.server start

Bei erfolgreichem Start wird folgender Hinweis ausgegeben:

Starting mysqld daemon with databases from /opt/mysql/mysql-4.0.16/data

Zur Information: Um den Server wieder zu stoppen, verwenden Sie das mysql.server Skript mit einem anderen Parameter:

Stoppen von MySQL
linux:/opt/mysql # /etc/init.d/mysql.server stop

Wurde der Server erfolgreich gestoppt, erhalten Sie eine Meldung der Art:

Killing mysqld with pid 14410
Wait for mysqld to exit\c
040224 16:40:34 mysqld ended
done

Es ist im Moment nicht notwendig, den Server wieder zu stoppen. Sie können gerne ausprobieren, den Server zu stoppen - solange Sie ihn anschließend wieder starten.

Update der Grant Tables

Dieser Schritt führt ein Update für verschiedene Datenbanktabellen durch:

Rechtetabellen aktualisieren
linux:/opt/mysql # mysql-4.0.16/bin/mysql_fix_privilege_tables

Eventuell erhalten Sie nach dem Aufruf des Skriptes einige Warnhinweise wegen doppelter Spaltennamen: Duplicate column name - diese können Sie ignorieren.

Passwort für MySQL-User root anlegen

Als letzten Konfigurationsschritt vergeben wir ein Passwort für den root-Benutzer der Datenbank. Zuerst rufen wir die MySQL-Umgebung als Benutzer root auf (-u root) und öffnen dabei die Datenbank mysql:

MySQL als root starten
linux:/opt/mysql # mysql -u root mysql

Nach diesem Aufruf begrüßt uns MySQL:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13 to server version: 4.0.16
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Nun geben Sie folgende SQL-Anweisung ein (ersetzen Sie dabei new_password durch Ihr gewünschtes Passwort) und drücken anschließend die Eingabetaste:

Passwort für root-Benutzer setzen
mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');

Danach verlassen Sie die MySQL-Umgebung und schließen damit die Installation der MySQL-Datenbank ab.

MySQL beenden
mysql> quit