Ja – der Fehler wird durch KeyHelp beim Anlegen eines Datenbankbenutzers verursacht.
Server-Betriebssystem + Version
Debian GNU/Linux 12 (Bookworm), 64-bit
Eingesetzte Server-Virtualisierung-Technologie
KVM
KeyHelp-Version + Build-Nummer
26.0 – Build 3624
Problembeschreibung / Fehlermeldungen
Nach dem Anlegen eines neuen Datenbankbenutzers über das KeyHelp-Panel schlägt jede Datenbankverbindung auf dem Server fehl – alle gehosteten Webseiten sowie das KeyHelp-Panel selbst (HTTP 500) sind nicht mehr erreichbar. MariaDB läuft dabei technisch einwandfrei.
Ursache: KeyHelp schreibt beim Anlegen des Benutzers einen fehlerhaften SQL-Ausdruck in die globale MariaDB-Variable init_connect. Einfache Anführungszeichen im Benutzernamen werden falsch escaped (verdoppelt), was zu syntaktisch ungültigem SQL führt.
Fehlermeldung in den MariaDB-Logs (journalctl -u mariadb):
Code: Select all
Aborted connection to db: 'keyhelp' user: 'keyhelp' host: 'localhost'
(init_connect command failed)
You have an error in your SQL syntax; check the manual that corresponds
to your MariaDB server version for the right syntax to use near
'cd_1_1_user@localhost'', '''', @@GLOBAL.sql_mode)' at line 1
Code: Select all
SET SESSION sql_mode = IF(CURRENT_USER() = ''cd_1_1_user@localhost'', '''', @@GLOBAL.sql_mode)
Code: Select all
SET SESSION sql_mode = IF(CURRENT_USER() = 'cd_1_1_user@localhost', '', @@GLOBAL.sql_mode)
Datenbankbenutzer wird angelegt, alle Verbindungen funktionieren weiterhin normal.
Tatsächliches Ergebnis
Totalausfall aller Datenbankverbindungen auf dem Server. Alle Webseiten nicht erreichbar, KeyHelp-Panel liefert HTTP 500.
Schritte zur Reproduktion
1. In KeyHelp einen neuen Datenbankbenutzer anlegen (Admin- oder Reseller-Ebene)
2. Den Benutzer einer Datenbank zuweisen
3. Anschließend prüfen:
Code: Select all
mysql -u root -e "SHOW VARIABLES LIKE 'init_connect';"5. Alle Datenbankverbindungen schlagen fehl
Zusätzliche Informationen
MariaDB-Version: 10.11.18
Workaround (stellt den Betrieb sofort wieder her):
Code: Select all
mysql -u root -e "SET GLOBAL init_connect='';"Code: Select all
grep -r "init_connect" /etc/mysql/