Debian-sys-maint darf nicht mehr rein

Das schöne an der Debian-Paketverwaltung ist ja, dass sie funktioniert. Beim letzten apt-get-upgrade blieb aber auf meiner ollen Xubuntu-Kiste die Erneuerung des MySQL-Server-5.0-Paketes hängen. Der harte, aber simple Weg, den bockigen Server ohne weitere Fehlersuche per <em>apt-get remove –purge mysql-server</em> restlos zu de- und anschließend wieder neu zu installieren (Backups machen wir ja sowieso regelmäßig ganz automatisch mit backup-manager, nicht wahr?), scheiterte allerdings ebenfalls: Access denied for user 'debian-sys-maint'@'localhost' (using password: YES'). Der mal wieder.

debian-sys-maint ist ein MySQL-User, den kein Admin persönlich kennt, der aber dennoch auf allen Debian-Systemen und deren Derivaten automatisch eingerichtet wird, um administrative Aufgaben zu erledigen. Und wie man sieht, kann er den ganzen Betrieb aufhalten. Ähnlichen Ärger hatte ich schon beim Upgrade von MySQL 4 auf 5: Ein neues Passwort-Format sorgte dafür, dass sich User, bei denen der alte Hash eingetragen war, mit dem neuen Client am neuen Server nicht mehr anmelden konnten: Die neue Verschlüsselung macht das an sich richtige, aber im alten Format gespeicherte Passwort unkenntlich. Wer die Suchmaschine seines Vertrauens mit der vom apt ausgespuckten Fehlermeldung füttert, stellt übrigens fest, dass es anscheinend noch tausend andere Gründe dafür geben kann, dass debian-sys-maint bockt.

Was immer der Grund ist: Solange man als Admin Root-Rechte erlangen kann, sollte sich alles wieder richten lassen, indem das Passwort für unseren Freund debian-sys-maint einfach erneut – und richtig – gesetzt wird. Da MySQL seine eigene User-Verwaltung besitzt, müssen Sie auch dort als Root arbeiten. Das Passwort werden Sie ja wohl nicht vergessen haben, oder?

1. Passwort „bergen“
Das Passwort findet sich im Klartext in der Datei /etc/mysql/debian.cnf, die man nur als root (bzw. unter Ubuntu mit sudo) einsehen kann:

ego@xubuntu:~$ sudo cat /etc/mysql/debian.cnf

2. Bei MySQL als root einloggen

ego@xubuntu:~$ mysql -uroot -p

3. Datenbank auswählen
MySQL verwaltet die Zugangs-Daten in der Tabelle ‚user‘ der Datenbank ‚mysql‘

mysql> use mysql

4. Passwort neu setzen
Wenn Sie als Server MySQL 5 verwenden und mit dem neuen Passwort-Format arbeiten, was die Regel sein dürfte, dann sollte folgendes UPDATE-Statement die Sache richten:

mysql> UPDATE user SET password = PASSWORD('passwort-aus-debian.cnf') WHERE USER = 'debian-sys-maint';

Wenn Sie einen 5er-Server und -Client verwenden, aber aus irgendwelchen Gründen mit dem alten Passwort-Format arbeiten (wie ich zum Beispiel), dann müssen Sie angeben, dass die alte Verschlüsselung genutzt werden soll:

mysql> UPDATE user SET password = OLD_PASSWORD('passwort-aus-debian.cnf') WHERE USER = 'debian-sys-maint';

Wie dem auch sei; als Ergebnis Ihres UPDATE-Statements sollte MySQL melden, dass eine Datenbank-Zeile geändert wurde.

5. Zum Schluss

mysql> flush privileges;

MySQL hat nun seine USER-Datenbank neu eingelesen und sollte den debian-sys-maint mit dem richtigen Passwort wieder einlassen, was sich mit einem Neustart des Servers sofort überprüfen lässt:

ego@xubuntu:~$ /etc/init.d/mysql restart

1 comment on “Debian-sys-maint darf nicht mehr rein”

  1. Danke für diesen hilfreichen Artikel. Endlich hab ich das Problem gelöst. Der entscheidende Hinweis war, das in der debian.cnf das Passwort im Klartext steht.

    Gruß
    Bruno

Schreibe einen Kommentar