%%
%%

\chapter{MySQL Installation und Konfiguration}
\label{MySqlChapter}
\index[general]{MySQL!Installation und Konfiguration }
\index[general]{MySQL Installation und Konfiguration }

\section{MySQL Installation und Konfiguration -- Phase I}
\index[general]{MySQL Installation und Konfiguration -- Phase I }
\index[general]{Phase I!MySQL Installation und Konfiguration -- }

Wenn Sie bei der Konfiguration des Bacula-Quelltextes die Option
\verb:--:with-mysql=/Pfad/zu/MySQL angeben, muss MySQL in der Version
4.1 oder sp\"{a}ter auf Ihrem System, in /Pfad/zu/MySQL, installiert sein.

Falls Sie eine Standard-MySQL-Installation verwenden reicht es,
wenn Sie \verb:--:with-mysql angeben. Bacula wird den Pfad zu MySQL dann
selbst finden. Wenn MySQL zum Beispiel in Ihrem home-Verzeichnis
installiert ist, m\"{u}ssen Sie den vollen Pfad zu der
MySQL-Installation angeben.

Die Installation und Konfiguration von MySQL ist zwar nicht sehr schwierig,
kann aber beim ersten Mal doch verwirrend sein. Daher werden hier einmal die
notwendigen Schritte zu einer laufenden MySQL-Datenbank beschrieben.
Bitte beachten Sie, dass die MySQL-Datenbank-Anmeldungen nach der Installation
noch nicht durch Passw\"{o}rter gesch\"{u}zt sind. Falls Sie auf Ihrem
System andere lokale Benutzer haben, ist das nicht unbedingt w\"{u}nschenswert.

Als n\"{a}chstes folgen die Schritte, die n\"{o}tig sind, um MySQL aus
dem Quelltext zu kompilieren. Falls Sie MySQL schon installiert haben,
k\"{o}nnen Sie jetzt die Installation von Bacula fortsetzen, um hier sp\"{a}ter
mit der Phase II der MySQL-Installation weiterzumachen. Wenn Sie die MySQL-RPMs
installieren wollen, ben\"{o}tigen Sie diese Pakete:

\footnotesize
\begin{alltt}
mysql-<version>.rpm
mysql-server-<version>.rpm
mysql-devel-<version>.rpm
\end{alltt}
\normalsize
Die Namen k\"{o}nnen, je nach Distribution, auch abweichen.
Wichtig ist es, dass Sie auch das devel-Paket, das die header-Dateien
und Bibliotheken enth\"{a}lt, die notwendig sind um Bacula zu
\"{u}bersetzen, installieren. Eventuell sind auch noch weitere
Pakete zu installieren die von den MySQL-RPMs benutzt werden,
zum Beispiel zlib und openssl. Nachdem diese Pakete installiert
sind, k\"{o}nnen Sie Bacula aus dem Quelltext \"{u}bersetzen.

\begin{enumerate}
\item downloaden Sie den MySQL-Quelltext von 
   \elink{www.mysql.com/downloads}{http://www.mysql.com/downloads}  

\item und entpacken Sie ihn mit einem Kommando wie zum Beispiel:

   {\bf tar xvfz mysql-filename}  

Falls Sie kein GNU-tar auf Ihrem System haben, k\"{o}nnen Sie auch

{\bf zcat mysql-filename | tar xvf - }  

ausf\"{u}hren, das Ergebnis ist das selbe. 

\item cd {\bf MySQL-Quelltext-Verzeichnis}

   ersetzen Sie "`MySQL-Quelltext-Verzeichnis"' mit dem Verzeichnis,
   in das Sie gerade den Quelltext entpackt haben.



\item ./configure \verb:--:enable-thread-safe-client \verb:--:prefix=MySQL-Verzeichnis

   Seit der Bacula-Version 1.31 wird die thread-safe-Version der
   MySQL-Client-Bibliotheken verwendet. Daher muss die Option
   {\bf \verb:--:enable-thread-safe-client} beim Konfigurieren des
   MySQL-Quelltextes angegeben werden.
   Der MySQL-Client ben\"{o}tigt zudem die gzip-Kompressions-Bibliotheken
   {\bf libz.a} oder {\bf libz.so}. Wenn Sie RPM-Pakete verwenden, finden Sie
   diese in {\bf libz-devel} und bei Debian hei{\ss}t dieses Paket {\bf zlib1g-dev}
   (auf anderen Distributionen wird der Name \"{a}hnlich sein).

   Ersetzen Sie "`MySQL-Verzeichnis"' mit dem Pfad, in den MySQL installiert werden soll.
   Normalerweise /usr/local/mysql f\"{u}r systemweite Installation oder zum Beispiel
   /home/bacula/mysql damit der Benutzer bacula eine eigene Datenbank zur Verf\"{u}gung hat.

   Bitte beachten Sie, dass Sie das "`MySQL-Verzeichnis"' auch beim konfigurieren
   des Bacula-Quelltextes mit der Option {\bf \verb:--:with-mysql=MySQL-Verzeichnis}
   angeben m\"{u}ssen.

\item make

   startet das Kompilieren des Quelltextes und wird einige Zeit ben\"{o}tigen

\item make install

   installiert alle ausf\"{u}hrbaren Dateien, Bibliotheken und anderen
   ben\"{o}tigten Dateien in das angegebene "`MySQL-Verzeichnis"'. 

\item ./scripts/mysql\_install\_db

   erzeugt die MySQL-Datenbanken die f\"{u}r die Benutzer-Autorisierung erforderlich sind.
   Dieses Script liegt auch im "`MySQL-Verzeichnis"' unter bin/.

\end{enumerate}

An diesem Punkt, fahren Sie jetzt bitte mit der Installation von Bacula fort.
Nachdem Bacula installiert ist, lesen Sie hier unter "`Phase II"' weiter.
Einige Scripte, die Sie f\"{u}r die zweite Phase der MySQL-Installation und
Konfiguration ben\"{o}tigen, werden erst bei der Installation von Bacula erstellt.

\label{mysql_phase2}
\section{MySQL Installation und Konfiguration -- Phase II}
\index[general]{MySQL Installation und Konfiguration -- Phase II }
\index[general]{Phase II!MySQL Installation und Konfiguration -- }

An diesem Punkt sollten Sie bereits MySQL und Bacula kompiliert
und installiert haben. Falls nicht, schlie{\ss}en Sie bitte diese
beiden Schritte erst ab, bevor Sie hier weitermachen.

Bei der Installation von Bacula werden mehrere Scripte in das
Installations-Verzeichnis kopiert, mit denen Sie verschiedene
\"{A}nderungen an der Datenbank durchf\"{u}hren k\"{o}nnen.
Diese Scripte haben Namen im Format *\_bacula\_*
(z.B. create\_bacula\_database)und dienen dazu die Datenbank
zu initialisieren, zu aktualisieren oder zu l\"{o}schen.
Diese Scripte sind auch im Bacula-Quelltext-Verzeichnis, nach
der Ausf\"{u}hrung des "`./configure"'-Scripts, unter
\lt{}bacula-src\gt{}/src/cats zu finden. Wenn Sie sich, zum
Beispiel, das Script create\_bacula\_database n\"{a}her ansehen
werden Sie merken, dass dieses Script einfach nur
create\_mysql\_database ausf\"{u}hrt. Alle Scripte die *\_bacula\_*
heissen, dienen nur der Bequemlichkeit. Es spielt keine Rolle
mit welcher Datenbank Sie den Bacula-Quelltext \"{u}bersetzt haben,
das Script create\_bacula\_database wird immer die f\"{u}r Sie
richtige Datenbank erstellen.

Die folgenden Schritte sind n\"{o}tig um die MySQL-Datenbank und Tabellen
zu erstellen, die Bacula benutzt:

\begin{enumerate}
\item Starten Sie {\bf mysql}. Dazu k\"{o}nnen Sie auch das Script {\bf startmysql}
   benutzen, dass Bacula mitinstalliert.

\item cd \lt{}Bacula-Installations-Verzeichnis\gt{}
   In diesem Verzeichnis finden Sie die Bacula-Datenbank-Scripte.

\item ./grant\_bacula\_privileges
   Dieses Script erm\"{o}glicht dem Benutzer "`bacula"' uneingeschr\"{a}nkten
   Zugriff auf die Datenbank. Eventuell m\"{u}ssen Sie es anpassen, um es auf
   Ihre Umgebung anzupassen. Bitte beachten Sie auch, dass nach der Installation
   kein Datenbank-Benutzer, auch root, ein Passwort gesetzt hat. Falls das
   f\"{u}r Sie zu unsicher ist, k\"{o}nnen Sie mit dem Kommando "`mysqladmin"'
   den Benutzern Passw\"{o}rter zuweisen.

\item ./create\_bacula\_database
   Dieses Script erzeugt die Bacula-Katalog-Datenbank. Diese Datenbank,
   und auch die bei der Installation angelegte MySQL-interne Benutzer-Datenbank,
   liegt danach im Verzeichnis var/ unterhalb des "`MySQL-Verzeichnis"'
   das Sie bei der Konfiguration des MySQL-Quelltextes mit der Option
   {\bf \verb:--:prefix} angegeben haben. Dieser Pfad zu den
   Datenbank-Dateien kann wichtig sein, wenn Sie diese Dateien auf speziellem
   Weg sichern wollen oder falls Sie wissen m\"{o}chten, welche Gr\"{o}{\ss}e
   die Datenbank hat.

\item ./make\_bacula\_tables
   Dieses Script legt die Tabellen an die Bacula ben\"{o}tigt.
\end{enumerate}

Jedes dieser Scripte erlaubt es Ihnen Optionen mit auf der Kommandozeile
zu \"{u}bergeben. Das kann n\"{u}tzlich sein, wenn Sie zum Beispiel einen
Benutzer oder Passwort zum Zugriff auf die Datenbank angeben m\"{u}ssen.
So ist es m\"{o}glich auf der Kommandozeile beispielsweise {\bf -u root} anzugeben,
um gen\"{u}gend Rechte zur Erstellung der Bacula-Datenbank zu haben.

Um einen genaueren Blick auf die oben gesetzten Zugriffsrechte f\"{u}r
den Benutzer bacula innerhalb der Datenbank zu werfen, k\"{o}nnen Sie
folgende Kommandos ausf\"{u}hren:

\footnotesize
\begin{alltt}
<MySQL-Verzeichnis>/bin/mysql -u root mysql
select * from user;
\end{alltt}
\normalsize

\section{Re-Initialisierung der Katalog-Datenbank}
\index[general]{Datenbank!Re-Initialisierung der Katalog- }
\index[general]{Re-Initialisierung der Katalog-Datenbank }

Nachdem Sie einige anf\"{a}ngliche Tests mit Bacula gemacht haben, wollen
Sie eventuell Ihre Katalog-Datenbank komplett leeren, um alle gelaufenen
Test-Backups aus der Datenbank zu entfernen. Um das zu erreichen,
tun Sie folgendes:

\footnotesize
\begin{alltt}
  cd <install-directory>
  ./drop_bacula_tables
  ./make_bacula_tables
\end{alltt}
\normalsize

Bitte bedenken Sie, dass dabei alle Informationen unwiderruflich
aus der Datenbank gel\"{o}scht werden. Falls Sie auch beschriebene
Volumes wiederverwenden wollen, m\"{u}ssen Sie das Volume-Label
\"{u}berschreiben damit Bacula sie erneut benutzen kann.
Das erreichen Sie durch:

\footnotesize
\begin{alltt}
   (stop Bacula or unmount the drive)
   mt -f /dev/nst0 rewind
   mt -f /dev/nst0 weof
\end{alltt}
\normalsize

hierbei m\"{u}ssen Sie {\bf /dev/nst0} durch das Device ersetzen,
dem Ihr Tapelaufwerk entspricht.

\section{Bacula mit MySQL linken}
\index[general]{Bacula mit MySQL linken }
\index[general]{MySQL!linken Bacula mit }


Nach der MySQL-Quelltext-Konfiguration mit:

./configure \verb:--:enable-thread-safe-client \verb:--:prefix=\lt{}MySQL-Verzeichnis\gt{}
wobei "`MySQL-Verzeichnis"' in diesem Beispiel {\bf /home/bacula/mysql} ist,
m\"{u}ssen Sie Ihrem Betriebssystem mitteilen wo die MySQL-Bibliotheken zu
finden sind. Falls Sie MySQL in einem Standard-Pfad installiert haben, wie
zum Beispiel {\bf /usr/lib} oder {\bf /usr/local/lib}, ist dies nicht n\"{o}tig.
In diesem Beispiel ist es aber notwendig den Pfad {\bf /home/bacula/mysql}
dem Loader-Proze{\ss} f\"{u}r dynamische Bibliotheken bekannt zu machen.
Die folgende Beschreibung ist Linux-spezifisch, bei anderen Betriebssystemen
lesen Sie bitte deren Dokumentation um dieses Ziel zu erreichen.

Als erstes m\"{u}ssen Sie die Datei {\bf /etc/ld.so.conf} editieren
und am Ende eine neue Zeile mit dem entsprechenden Pfad hinzuf\"{u}gen.

In diesem Beispiel: "`/home/bacula/mysql/lib/mysql"'
danach muss der Cache des Loader-Proze{\ss}es mit {\bf /sbin/ldconfig}
neu gebaut werden.

Wenn Sie MySQL auf eine neuere Version updaten \"{a}ndern eventuell
einige der Bibliotheken ihre Namen, dann m\"{u}ssen Sie den Loader-Cache
wiederum mit {\bf /sbin/ldconfig} aktualisieren. Das Gleiche gilt
wenn Sie MySQL mit anderen Optionen neu kompilieren und sich dadurch
die MySQL-Bibliotheken \"{a}ndern, zum Beispiel, weil Sie beim ersten
kompilieren die ben\"{o}tigte Option \verb:--:enable-thread-safe-client
vergessen haben.

Eventuell kennt Ihr System auch eine Umgebungsvariable die zu diesem Zweck
gesetzt werden kann. Auf Solaris kann man die Variable
LD\_LIBRARY\_PATH dazu benutzen. In diesem Beispiel setzt man sie dazu auf:

LD\_LIBRARY\_PATH=/home/bacula/mysql/lib/mysql

Falls Sie zus\"{a}tzlich die Verschl\"{u}ssellung in MySQL aktiviert haben,
ist es m\"{o}glich, dass Sie {\bf -lssl -lcrypto} mit an den Linker
\"{u}bergeben m\"{u}ssen. Dazu k\"{o}nnen Sie entweder die LDFLAGS-Definition
exportieren, oder sie direkt beim Aufruf von ./configure angeben:

\footnotesize
\begin{alltt}
LDFLAGS="-lssl -lcyrpto" \
   ./configure \
      <your-options>
\end{alltt}
\normalsize

\section{MySQL RPM-Installation}
\index[general]{MySQL!RPM-Installation}
\index[general]{MySQL RPM-Installation}
Wenn Sie die MySQL-RPMs installieren wollen, ben\"{o}tigen Sie
sowohl das eigentlich MySQL- als auch das Paket, dass die Client-
Bibliotheken enth\"{a}lt, normalerweise das devel-Paket.
Sie m\"{u}ssen also diese beiden Pakete installieren:

\footnotesize
\begin{alltt}
  mysql
  mysql-devel
\end{alltt}
\normalsize

Bei den meisten anderen Paket-Managern wird das \"{a}hnlich aussehen.
Nach der Installation der Pakete m\"{u}ssen Sie die oben genannten
Bacula-Scripte zur Datenbank-Einrichtung ausf\"{u}hren.

\section{MySQL updaten}
\index[general]{MySQL updaten }
\index[general]{MySQL!updaten }
\index[general]{Update}
Um Ihre MySQL-Installation zu aktualisieren, m\"{u}ssen Sie
es neu konfigurieren, kompilieren und installieren. Andernfalls
kann es sein, dass bei Bacula merkw\"{u}rdige Fehler auftreten.
Auch nach der Aktualisierung der MySQL-RPMs ist es notwendig
Bacula neu zu bauen. Das k\"{o}nnen Sie einfach, mit den
entsprechenden RPM-Kommandos, \"{u}ber das Bacula-Source-RPM
ereichen. Eventuell m\"{u}ssen Sie aber vorher die bacula.spec
anpassen, damit es mit der neuen MySQL-Version funktioniert.
