init_connect Bug-Report  [GELÖST]

Haben Sie einen Bug entdeckt? Teilen Sie es uns mit.
Post Reply
mxits
Posts: 1
Joined: Thu 20. Mar 2025, 22:20

init_connect Bug-Report

Post by mxits »

Ich bin sicher, dass die Ursache des Problems bei KeyHelp liegt
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
Tatsächlicher Wert in init_connect nach dem Anlegen des Benutzers:

Code: Select all

SET SESSION sql_mode = IF(CURRENT_USER() = ''cd_1_1_user@localhost'', '''', @@GLOBAL.sql_mode)
Korrekte Schreibweise wäre:

Code: Select all

SET SESSION sql_mode = IF(CURRENT_USER() = 'cd_1_1_user@localhost', '', @@GLOBAL.sql_mode)
Erwartetes Ergebnis
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';"
4. init_connect enthält nun ungültiges SQL mit falsch escapten Anführungszeichen
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='';"
Hinweis: SET GLOBAL wirkt nur bis zum nächsten MariaDB-Neustart. Es sollte zusätzlich geprüft werden ob init_connect in einer Konfigurationsdatei hinterlegt ist:

Code: Select all

grep -r "init_connect" /etc/mysql/
User avatar
Alexander
Keyweb AG
Posts: 4912
Joined: Wed 20. Jan 2016, 02:23

Re: init_connect Bug-Report  [GELÖST]

Post by Alexander »

Hallo,

kann ich nicht reporduzieren.

Ich kann z.B. den Datenbankbenutzer cd_1_1_user problemlos anlegen.

Der Parameter init_connect wird seitens KeyHelp auch nicht angerührt. Der Eintrag muss wohl von jemand anderen vorgenommen wurden sein.


"cd_1_1_user" ist der Datenbanknutzer, den du gerade anlegen wolltest?
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Post Reply