webhosting

Wie man den MySQL Strict Mode deaktiviert

Hiermit deaktivierst du den MySQL Strict Mode für inkompatible CMS Systeme.

Einige Content Management Systeme wie Typo, Contao, Contenido oder andere Systeme haben Probleme mit dem seit MySQL 5.1 vorhandenen Strict Mode. Dieser ist seit der Version 5.7 als Standardeinstellung aktiv.

Damit man diese CMS Systeme auch verwenden kann besteht noch die Möglichkeit serverseitig den Strictmode abzuschalten. Zu empfehlen ist das natürlich nur bedingt.

Was macht der Strict mode?

Der Strict-Mode von MySQL/MariaDB kontrolliert, wie ungültige oder fehlende Werte in Datenänderungsabfragen behandelt werden, einschließlich INSERT-, UPDATE- und CREATE Deklarationen.

So können ungültige oder fehlende Daten zu Warnungen oder Fehlern führen wenn die SQL Abfrage erfolgt. Bei einem ausgeschalteten Scrict-Mode werden die ungültigen Abfragen oder fehlende Werte angepasst und eine einfache Warnung ausgegeben. Das kann zu unerwarteten Ergebnissen führen.

Ein Beispiel wäre eine Zeichenbegrenzung. Bei einem ausgeschalteten Strict-Mode werden überschüssige Zeichen dann abgeschnitten damit es passt.

Warum tritt das nur bei einigen CMS Systemen auf?

Da kann man nur spekulieren. Vermutlich ist der Code so umfangreich dass keiner mehr durchblickt. An einem Content Management System arbeiten sehr viele Leute, teilweise bringen sie einzelne Funktionen ein die dann jahrelang nicht mehr angeschaut werden. Solange keine gravierenden Probleme auftreten ist es auch nicht so schlimm.

Bei einem ebenfalls betroffenen System wie whmcs sieht es da schon anders aus. Wenn wichtige Daten abgeschnitten werden kommt es zu fehlerhaften Zuweisungen. Das kann im Abrechnungsfall dann problematisch werden.

Wo kann dieser Anleitung angewandt werden?

Die Anleitung bezieht sich auf Linux Systeme mit MySQL 5.6/5.7 oder MariaDB 10.1 und höher bei denen der Strict Mode aktiv ist.

Root Zugang ist erforderlich, um die Änderungen durchzuführen. Unsere Anleitungen beziehen sich immer auf Centos Linux. Bei anderen Distributionen können die Konfigurationsdateien in anderen Verzeichnissen liegen.

Schritt 1: Backups erstellen

Wenn man Dateien editiert, sollte man immer ein Backup anfertigen. Man kann viel zu schnell etwas unbeabsichtigt löschen.

cp -a /etc/my.cnf{,.strict.bak}

Der Befehl erstellt von der my.cnf eine my.cnf.strict.bak Datei im selben Verzeichnis.

Schritt 2: MySQL Strict Mode deaktivieren

In der Datei steht normalerweise kein sql_mode=… daher müsste folgende Zeile hinzugefügt werden im Abschnitt [mysqld] :

sql_mode=““

Schritt 3: MySQL Service neu starten

Nachdem nun die Datei editiert wurde muss der Dienst neu gestartet werden, um die Änderungen zu übernehmen.

systemctl restart mariadb

Nachdem der Dienst neu gestartet wurde kann man die Einstellung überprüfen in dem folgender Befehl ausgeführt wird. Hier als Beispiel mit dem Passwort auf einem Plesk Server. Alternativ mit root und dem Passwort.

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e „SELECT @@sql_mode;“

Folgende Rückgabe sollte dann erscheinen:

+————+

| @@sql_mode |

+————+

|            |

+————+

Teile bitte den Beitrag
Aktie auf facebook
Aktie auf twitter
Aktie auf linkedin
Aktie auf pinterest
Aktie auf whatsapp
Aktie auf telegram
Letzte Beiträge

Empfohlenes Video von unserem Youtube Channel