Irgendwann hat sich wohl mal jemand gedacht, man bräuchte als Debian-User spezielle Start- und Stopskripte für MySql. Diese haben dummerweise auch die Implikation, dass Debian auch einen eigenen Benutzer mit eigenem Kennwort erstellt: debian-sys-maint. Das Resultat bei einer unvorsichtigen Handhabung dieses Umstands, könnte sein, dass man dieses Kennwort versehentlich überschreibt, löscht, den User entfernt, weil man nichts damit anfangen kann, etc.
Das wird allerdings spätestens nach einem “flush priviliges” oder dem neustart der Datenbank zum Problem.
Der nächste Neustart läuft nämlich daneben und Debian killt den MySql-Prozess. Das macht einem nicht nur beim Anblick der Konsole angst, es kann auch ernsthafte Konsequenzen haben. Denn das üblicherweise verwendete MyIsam-Tabellenformat reagiert höchst allgergisch auf einen Kill-Befehl. Zumindest dann, wenn gerade jemand versucht in die Datenbank zu schreiben. Die Tabelle auf die während des Kill-Befehls geschrieben wurde ist dann nämlich erstmal als defekt markiert und muss repariert werden, was wieder neue Risiken birgt.
Die Wiederherstellung der Passworts
Das Kennwort für den Mysql-Benutzer debian-sys-maint befindet sich in der Datei /etc/mysql/debian.cnf.
Jetzt ist nur noch folgendes zu tun:
Alternativ kann man das Kennwort auch in der Konfigurationdatei einfach neu setzen. Dabei ist zu beachten, dass es zweimal in der Datei steht. Einmal im Abschnitt [client] und einmal im Abschnitt [mysql-upgrade].
Das nennt sich Sicherheit
… denn zum starten und stoppen der Datenbank muss man nicht root sein. Eigentlich sollte man root so gut wie nie benutzen, ausser vllt zum anlegen anderer Benutzer. Und eine frage hab ich da noch: wenn du nun dein Passwort überschrieben hast und die Datenbank nicht mehr läuft, wie willst du dann auf die Datenbank zugreifen um das Passwort zu ändern
… da fehlt vllt noch der Hinweis MySQL dann manuell zu starten. Weil über die Start-Scripts wird das ja nichts mehr.
Danke, das habe ich gebraucht!
Das SQL-Statement für das Passwort zurücksetzen ist leider nicht ganz richtig. Die Tabelle heißt nicht “mysql” sondern “user”, das Passwort muss auch in Hochkomma stehen. Damit geht’s:
update user
set Password=password(‘kennword-aus-der-konfigurationsdatei’)
where User=’debian-sys-maint’
;
@Richard
Danke für den Hinweis. Ist korrigert.