Herzlich willkommen zum zweiten Teil dieser Tutorial-Serie. Nachdem wir den nginx-Webserver sowie den PHP-Interpreter installiert haben, benötigen wir nun noch einen Datenbankserver, um die Inhalte, die etwa über ein CMS, Blogsystem oder Forum erzeugt werden, zu speichern.
Wir nehmen dazu das Datenbanksystem MySQL. MySQL stellt den Quasi-Standard bei “normalen” Websites dar und wird auch bei fast allen Shared-Hosting-Providern eingesetzt. In diesem Teil des Workshops werden wir den MySQL-Server installieren sowie Datenbanken und Benutzer anlegen.
Auf unserem Debian 6.0-System ist der MySQL-Server in der Version 5.1 in den Repositories enthalten. Wer unbedingt eine aktuellere Version wünscht, kann wie in Teil #1 dieses Workshops beschrieben das Dotdeb.org-Repository benutzen.
Zuerst installieren wir den MySQL-Server sowie die MySQL-Erweiterung für den PHP-Interpreter über die Paketverwaltung.
apt-get install mysql-server php5-mysql
Während der Installation werden wir dazu aufgefordert, ein Passwort für den MySQL-root-Benutzer zu erstellen. Dieses Passwort sollte unbedingt sehr stark gewählt werden, da ein Angreifer sonst Zugriff auf sämtliche auf unserem Server gespeicherten MySQL-Datenbanken hat. Inklusive Kundendaten, Kreditkarteninfos oder was wir sonst auf unserem Server zu speichern gedenken. Auch wenn man natürlich immer starke Passwörter verwenden sollte, ist dieser Hinweis hier besonders zu beherzigen.
Nach Abschluss der Installation widmen wir uns auch gleich um die Sicherheit unseres MySQL-Servers. Standardmäßig ist beispielsweise der Remote-Zugriff auf alle Datenbanken über Port 3306 möglich, was Angriffe auf die Datenbank erheblich erleichtert. Zur Absicherung des Server verwenden wir den Befehl mysql_secure_installation. Jetzt werden wir zuerst nach unserem MySQL-root-Passwort gefragt. Dann erhalten wir die Möglichkeit, das root-Passwort zu ändern. Da wir ja bereits ein ausreichend sicheres Passwort gewählt haben, können wir diesen Schritt mit n überspringen. Die nächste Abfrage Remove anonymous users? nicken wir mit einem Druck auf die Enter-Taste ab. Auch die nächsten Abfragen nach dem Remote-Login, den Test-Datenbanken und nach den privilege tables bestätigen wir einfach mit “Enter”, da die empfohlenen Einstellungen schon automatisch ausgewählt werden.
Um neue Datenbanken und Datenbank-User anzulegen, starten wir mit dem Befehl mysql die MySQL-Shell. Als Parameter müssen wir sowohl den Benutzernamen “root” als auch unser Passwort übergeben:
mysql -u root -p
Nach korrekter Eingabe unseres MySQL-Root-Passworts (übrigens nicht zu verwechseln mit dem root-Passwort unserer Linux-Installation!) befinden wir uns auf der MySQL-Shell, was wir an dem Promt mysql> erkennen können. Im Folgenden erstellen wir eine Datenbank “wordpress”, einen Dankenbanknutzer namens “blogger” und weisen dem Benutzer die Datenbank zu.
mysql> CREATE DATABASE wordpress; mysql> CREATE USER blogger@localhost IDENTIFIED BY "Felsqualle"; mysql> GRANT ALL PRIVILEGES ON wordpress.* TO blogger@localhost; mysql> exit;
Prinzipiell bedürfen diese Schritte keiner weiteren Erklärung. Der erste Befehl legt die Datenbank “wordpress” an. Der zweite Befehl legt den Benutzer “blogger” an und weist ihm das Passwort “Felsqualle” zu. Der Parameter “@localhost” hinter dem Nutzernamen besagt, dass eine Anmeldung nur direkt auf dem Server und nicht von einem entfernten Rechner über Port 3306 möglich ist. “localhost” ist zugleich der Name des Datenbankservers. Der dritte Befehl übergibt dem MySQL-Nutzer “blogger” alle Rechte der Datenkbank “wordpress”. Mit exit; verlassen wir abschließend die MySQL-Shell.
Damit ist die Einrichtung des MySQL-Servers abgeschlossen. Evtl. muss noch der PHP-Interpreter neu gestartet werden, damit die MySQL-Erweiterung für PHP geladen wird.