Datenbankserver nicht mehr über öffentliche IP-Adressen erreichbar

Die meisten unserer Datenbankserver (MySQL und MariaDB) waren bisher über öffentliche IP-Adressen auch außerhalb unseres Rechenzentrums erreichbar. Dies ist aus Sicherheitsgründen nicht ideal, weshalb wir für neue Datenbankserver seit Anfang 2020 nur noch interne IP-Adressen nutzen.

Für ältere Datenbankserver werden wir nun zum 04.10.2021 ebenfalls eine Umstellung auf interne IP-Adressen vornehmen, damit alle Datenbankserver nur noch innerhalb des Rechenzentrums von unseren Webservern aus erreichbar sind. Für Zugriffe außerhalb unseres Rechenzentrums ist dann der Aufbau eines SSH-Tunnels zu einem unserer Webserver erforderlich.

Wen betrifft diese Änderung?

Diese Änderung ist nur für wenige Kunden relevant, die von ihrem Rechner über lokal installierte Clientsoftware wie HeidiSQL oder Warenwirtschaftssysteme direkt auf unsere Datenbanken zugreifen. Falls Sie unsere Datenbanken nur für Web-Anwendungen wie WordPress nutzen, und nicht von außerhalb auf die Datenbankserver zugreifen, ändert sich für Sie nichts.

Welche Datenbankserver sind betroffen?

Die Änderung betrifft folgende Datenbankserver (MySQL 5.5, 5.6, 5.7, 8.0, MariaDB 10.1 bis 10.5):

  • db1
  • db2
  • db3
  • db4
  • db5
  • db6
  • db7
  • db8
  • db9
  • db10
  • db12
  • db13
  • db15
  • db19
  • db21
  • db22
  • db26
  • db27

Alle anderen Datenbankserver sind schon von Anfang an nur über interne IP-Adressen erreichbar.

Wie funktioniert ein SSH-Tunnel?


Ein SSH-Tunnel stellt eine verschlüsselte VPN-Verbindung zu einem unserer Webserver her. Über diesen Tunnel können Sie sich dann mit unseren Datenbankservern verbinden, als würde es sich um lokale Datenbankserver handeln.

In unserem FAQ-Artikel “Wie kann ich mich verschlüsselt mit einem MySQL-Server verbinden?” beschreiben wir den Verbindungsaufbau über einen SSH-Tunnel für verschiedene Software-Clients und Betriebssysteme.

Wir haben festgestellt, dass nur auf etwa 0,6% aller Datenbanken ohne einen SSH-Tunnel zugegriffen wird. Nutzer, die mit einem lokalen SQL-Client auf die Datenbankserver zugreifen, haben hier nur einen überschaubaren Umstellungsaufwand. Aufwendiger könnte die Umstellung z.B. von Warenwirtschaftssystemen werden. Wir beraten Sie hier gern und helfen, eine pragmatische Lösung zu finden.

Wichtig ist: Nutzer, die weiterhin von außerhalb unserer Webserver auf unsere MySQL- und MariaDB-Datenbanken zugreifen möchten, müssen vor dem 04.10.2021 aktiv werden, damit dieser Zugriff auch nach der Umstellung noch funktioniert.

Wir werden alle Kunden, von denen wir aus Logdateien wissen, dass sie in den letzten Wochen entsprechende Zugriffe auf Datenbanken hatten, explizit anschreiben. Hören Sie nichts von uns, besteht mit großer Wahrscheinlichkeit auch kein Anpassungsbedarf.

Aktualisierung vom 30.09.2021: Ursprünglich sollte die Änderung am Freitag, den 01.10.2021 durchgeführt werden. Um bei eventuellen Problemen für Kunden besser erreichbar zu sein, haben wir die Umstellung auf Montag, den 04.10.2021 verschoben.

MariaDB 10.1 verfügbar

Ab sofort können Sie im Kundenmenü für neue Datenbanken auch MariaDB in der aktuellen Version 10.1 nutzen. MariaDB ist eine Abspaltung von MySQL, die nach der Übernahme von MySQL durch Oracle von einigen früheren Entwicklern aus Unzufriedenheit mit dem neuen Eigentümer initiiert wurde. MariaDB nutzt die gleichen Schnittstellen und SQL-Befehle wie MySQL, die Version 10.1 ist weitgehend kompatibel zu MySQL Version 5.7. In den meisten Anwendungen (z.B. WordPress, Joomla, OwnCloud) können Sie einfach statt einer MySQL-Datenbank MariaDB nutzen (falls die Anwendung MariaDB nicht als eigenen Datenbank-Typ unterstützt, wählen Sie als Datenbank-Typ einfach MySQL).

MySQL 5.7 als Standard

Weiterhin haben wir die Standard-MySQL-Version für neue Datenbanken von MySQL Version 5.6 auf Version 5.7 umgestellt. Wenn Sie eine neue Datenbank anlegen, und keine andere MySQL-Version auswählen, wird standardmäßig Version 5.7 genutzt.

Mögliche Probleme mit MySQL 5.7

Seit MySQL Version 5.6 sind standardmäßig die Optionen STRICT_TRANS_TABLES und NO_ENGINE_SUBSTITUTION gesetzt, die Option STRICT_TRANS_TABLES  kann allerdings bei älteren Anwendungen manchmal zu Problemen führen. Alternativ können Sie auch weiterhin MySQL Version 5.5 oder das neue MariaDB nutzen, oder Sie deaktivieren diese Option für eine MySQL-Session über folgenden Befehl:

SET SESSION sql_mode = "NO_ENGINE_SUBSTITUTION";

MySQL 5.7 und TRIGGER-Rechte für Datenbanken

Ab sofort lassen sich im Kundenmenü neue Datenbanken mit der aktuellsten MySQL-Version 5.7 einrichten. Für neu angelegte Datenbanken sind nun außerdem standardmäßig EVENT- und TRIGGER-Rechte freigeschaltet, die beispielsweise für Magento 2 benötigt werden.

Mittelfristig werden wir auch die bestehenden MySQL-Datenbanken auf die Version 5.7 aktualisieren, dabei aber die Abwärtskompatibilität zu der Version gewährleisten, in der die jeweilige MySQL-Datenbank eingerichtet wurde.

Hinweis zum Umstieg von MySQL 5.5

Seit MySQL Version 5.6 sind standardmäßig die Optionen STRICT_TRANS_TABLES und NO_ENGINE_SUBSTITUTION gesetzt, die Option STRICT_TRANS_TABLES  kann allerdings manchmal zu Problemen führen. Diese Option kann jedoch in einer MySQL-Session über folgenden Befehl deaktiviert werden:

SET SESSION sql_mode = "NO_ENGINE_SUBSTITUTION";

Weiterhin unterscheidet sich der serverseitige Standard-Zeichensatz zwischen MySQL Version 5.5 und den neueren Versionen 5.6 und 5.7. Unsere MySQL-5.5-Datenbanken nutzen aus Gründen der Abwärtskompatibilität zu MySQL 4 standardmäßig den Latin1-Zeichensatz, MySQL 5.6/5.7 nutzen UTF-8. Falls Sie eine bestehende MySQL-5.5-Datenbank auf MySQL 5.6/5.7 migrieren, kann es dadurch unter Umständen zu Problemen bei der Darstellung von Umlauten und Sonderzeichen kommen. Diese Probleme treten meistens bei selbst entwickelten PHP-Scripten auf, wenn der der gewünschte Datenbank-Zeichensatz nicht ausdrücklich vorgegeben wird. Die meisten bekannten PHP-Anwendungen nutzen seit längerem UTF-8 als Standard-Zeichensatz und sind daher von diesen Problemen nicht betroffen, Sie können bei Problemen den alten Standard-Zeichensatz durch folgenden SQL-Befehl setzen:

SET NAMES 'latin1';

PHP 7.0 verfügbar

Seit heute steht auf unseren Webservern die neue Version 7.0 von PHP zur Verfügung. Der Versionssprung von 5.6 auf 7 liegt daran, dass die Entwicklung von PHP 6 aus verschiedenen Gründen eingestellt wurde.

Vorteile von PHP 7

Die Hauptverbesserungen bei PHP 7 wurden an den internen Datenstrukturen vorgenommen, dort konnte der Speicherbedarf stark reduziert werden. Dies führt zu einer deutlichen Erhöhung der Ausführungsgeschwindigkeit von PHP-Scripten, in der Praxis laufen viele Anwendungen wie z.B. WordPress unter PHP 7.0 doppelt so schnell wie unter PHP 5.6, der Umstieg auf PHP 7 lohnt sich also.

Mögliche Probleme beim Wechsel auf PHP 7

Bei PHP 7 wurden einige bisher nur als veraltet markierte Extensions endgültig entfernt, darunter auch die häufig eingesetzte originale MySQL-Extension. Als Alternativen können die MySQL-Improved-Extension (MySQLi) oder PDO genutzt werden.

Weiterhin sind einige Begriffe wie int, float, bool, string, true, false und null nun reserviert und dürfen nicht mehr für Klassennamen oder Ähnliches genutzt werden, dies führt bei einigen PHP-Anwendungen wie beispielsweise Joomla zu Problemen.

Eine vollständige Übersicht der nicht abwärtskompatiblen Änderungen finden Sie hier.

Aufgrund dieser Änderungen sind viele bekannte PHP-Anwendungen nicht kompatibel mit PHP 7. Für die meisten betroffenen Anwendungen sollten jedoch in Kürze Updates erscheinen, die diese Probleme beheben. Die bei uns am häufigsten genutzte PHP-Anwendung WordPress ist in der aktuellen Version vollständig kompatibel mit PHP 7, es kann jedoch unter Umständen Probleme mit älteren WordPress-Plugins geben.

PHP 7 aktivieren

PHP 7 wird nicht automatisch für alle PHP-Scripte auf unseren Webservern genutzt, da bei einer Änderung der Standard-PHP-Version viele Webseiten nicht mehr korrekt funktionieren würden. Sie können jedoch die gewünschte PHP-Version für Ihre Webseiten über eine Konfigurationsdatei vorgeben, eine Anleitung dazu finden Sie hier.

MySQL 5.6 für neue Datenbanken verfügbar

Seit einigen Tagen lässt sich im Kundenmenü für neue Datenbanken die MySQL-Version 5.6 auswählen. Sie wird für manche Content-Management-Systeme oder Online-Shops wie Magento 2 benötigt.

Wenn Sie eine bestehende Datenbank mit MySQL 5.6 nutzen möchten, können Sie diese z.B. über phpMyAdmin exportieren, eine neue Datenbank mit MySQL 5.6 anlegen und die Daten dort importieren.

Hinweis zum Umstieg von MySQL 5.5

Bei MySQL Version 5.6 sind standardmäßig die Optionen STRICT_TRANS_TABLES und NO_ENGINE_SUBSTITUTION gesetzt, die Option STRICT_TRANS_TABLES  kann allerdings manchmal zu Problemen führen. Diese Option kann jedoch in einer MySQL-Session über folgenden Befehl deaktiviert werden:

SET SESSION sql_mode = "NO_ENGINE_SUBSTITUTION";

Weiterhin unterscheidet sich der serverseitige Standard-Zeichensatz: Unsere MySQL-5.5-Datenbanken nutzen aus Gründen der Abwärtskompatibilität zu MySQL 4 standardmäßig den Latin1-Zeichensatz, MySQL 5.6 nutzt UTF-8. Falls Sie eine bestehende MySQL-5.5-Datenbank auf MySQL 5.6 migrieren, kann es dadurch unter Umständen zu Problemen bei der Darstellung von Umlauten und Sonderzeichen kommen. Diese Probleme treten meistens bei selbst entwickelten PHP-Scripten auf, wenn der der gewünschte Datenbank-Zeichensatz nicht ausdrücklich vorgegeben wird. Die meisten bekannten PHP-Anwendungen nutzen seit längerem UTF-8 als Standard-Zeichensatz und sind daher von diesen Problemen nicht betroffen, Sie können bei Problemen den alten Standard-Zeichensatz durch folgenden SQL-Befehl setzen:

SET NAMES 'latin1';