Eine Datenbank braucht man für fast jede Webanwendung. Ich verwende hier die sehr verbreitete mySQL-Datenbank, auch wenn es vielleicht nicht das performanteste System ist.

mySQL installieren wir auch aus den Ports. Gleichzeitig versuchen wir den Datenbankserver mit einigen kleinen Tricks etwas sicherer zu machen.

  1. Zunächst kompilieren und installieren wir den mySQL-Server. Wir nutzen hier kein SSL, da wir auf die Datenbank nur lokal zugreifen werden und den Sinn einer Verschlüsselung des internen Datenverkehrs sehe ich noch nicht.

    # cd /usr/ports/databases/mysql50-server

    # make BUILD_OPTIMIZED=yes BUILD_STATIC=yes

    # make install clean

  2. Wir sichern in einem nächsten Schritt den mySQL-Server ab und installieren eine Testdatenbank:

    # strip /usr/local/libexec/mysqld

    # /usr/local/bin/mysql_install_db
  3. Jetzt können wir wählen, welche Konfiguration wir verwenden. Dies hängt von der erwarteten Größe der Datenbank ab. Hierfür werden 3 verschiedene Konfigurationsempfehlungen mitgeliefert: small, medium, large, huge

    # cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

  4. Wir haben unseren SQL-Server ja in einer Jail laufen und da ich den Webserver, der in einer anderen Jail läuft, auf die Datenbank zugreifen lassen will, kann ich an dieser Stelle den externen Zugriff nicht verbieten. Aber wir sollten den Zugriff auf lokale Dateien unterbinden, indem wir folgende Zeile im Abschnitt [mysqld] einfügen:

    set-variable=local-infile=0

  5. Zusätzlich fügen wir noch folgende Zeilen ein:

    default-character-set = utf8
    default-collation = utf8_general_ci

  6. Jetzt müssen wir noch den mySQL-Server in der '/etc/rc.conf' aktivieren, sodass beim nächsten Systemstart der Server automatisch startet:

    mysql_enable="YES"

  7. Bevor wir den Server nun starten können, müssen wir den Speicherort der Datenbanken erstellen und in die Hände unseres Benutzers "mysql" legen:

    # chown -R mysql:mysql /var/db/mysql

  8. Jetzt können wir den mySQL-Server starten:

    # /usr/local/etc/rc.d/mysql-server start

  9. Jetzt ändern wir das Passwort des Datenbankbenutzers "root" und ändern anschließend seinen Namen. Das sichert den Server nochmals ab, da "root" der Standardname bei Datenbanken ist und somit nur das Passwort erraten werden müsste:

    # mysql -u root

    mysql> SET PASSWORD FOR root@localhost=PASSWORD('neuesPasswort');

    Jetzt löschen wir noch die Test-Datenbank:

    mysql> drop database test;
    mysql> use mysql;
    mysql> delete from db;
    mysql> update user set user="mydbadmin" where user="root";
    mysql> flush privileges;
    mysql> exit;

  10. Jetzt löschen wir noch die Befehls-History:

    # rm -P ~/.mysql_history