Lösung 1:
Wofür wird debian-sys-maint verwendet?
Eine wichtige Sache, für die es verwendet wird, ist, dem Server zu sagen, dass er die Protokolle rollen soll. Es benötigt mindestens das Recht zum Neuladen und Herunterfahren.
Siehe die Datei /etc/logrotate.d/mysql-server
Es wird von /etc/init.d/mysql
verwendet Skript, um den Status des Servers abzurufen. Es wird verwendet, um den Server ordnungsgemäß herunterzufahren/neu zu laden.
Hier ist das Zitat aus README.Debian
* MYSQL WON'T START OR STOP?:
=============================
You may never ever delete the special mysql user "debian-sys-maint". This user
together with the credentials in /etc/mysql/debian.cnf are used by the init
scripts to stop the server as they would require knowledge of the mysql root
users password else.
Wie kann ich es am einfachsten wiederherstellen, nachdem ich es verloren habe?
Der beste Plan ist, es einfach nicht zu verlieren. Wenn Sie das Passwort wirklich verlieren, setzen Sie es mit einem anderen Konto zurück. Wenn Sie alle Administratorrechte auf dem MySQL-Server verloren haben, befolgen Sie die Anleitungen zum Zurücksetzen des Root-Passworts und reparieren Sie dann debian-sys-maint
.
Sie könnten einen Befehl wie diesen verwenden, um eine SQL-Datei zu erstellen, die Sie später verwenden können, um das Konto neu zu erstellen.
mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql
Ist das Passwort in/etc/mysql/debian.cnf bereits gehasht
Das Passwort wird bei der Installation nicht gehasht/verschlüsselt, aber neue Versionen von mysql haben jetzt eine Möglichkeit, die Anmeldeinformationen zu verschlüsseln (siehe:https://serverfault.com/a/750363).
Lösung 2:
Die debian-sys-maint user ist standardmäßig ein Root-Äquivalent . Es wird von bestimmten Wartungsskripten auf Debian-Systemen verwendet und ermöglicht als Nebeneffekt Benutzern mit Root-Zugriff auf die Box, das Klartext-Passwort in /etc/mysql/debian.cnf anzuzeigen (gut oder schlecht?)
Sie können den Benutzer wie folgt neu erstellen:
GRANT ALL PRIVILEGES on *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'your password' WITH GRANT OPTION;
Stellen Sie einfach sicher, dass das Passwort übereinstimmt das in /etc/mysql/debian.cnf
Lösung 3:
Sie könnten auch:
sudo dpkg-reconfigure mysql-server-5.0
Dadurch haben Sie die Möglichkeit, den Benutzer debian-sys-maint neu zu erstellen. Bestehende Benutzer und Datenbanken sind sicher.
Lösung 4:
Ich wollte nur kommentieren, aber ich denke korrekte Syntax verdient einen eigenen Eintrag. Dadurch wird debian-sys-maint erstellt Benutzer:
mysql> GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'plaintextpassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
Wenn Sie noch die Datei /etc/mysql/debian.cnf haben, verwenden Sie einfach das Passwort darin.
Fühlen Sie sich frei, sich einen paranoideren auszudenken sichere Lösung.
Lösung 5:
Wenn Sie den debian-sys-maint
hinzufügen müssen Benutzer nur für logrotate.d
Zwecke, sollten Sie nicht gewähren Sie ALL PRIVILEGES
oder die GRANT OPTION
-- das ist eine unnötige riesige Sicherheitslücke. Stattdessen können Sie den Benutzer einfach mit dem RELOAD
hinzufügen Privileg wie dieses (vorausgesetzt, Sie greifen auf Ihre Datenbank als root
zu , und Sie ersetzen xxxxxx durch Ihr Passwort)
# add the user with the reload right
GRANT RELOAD on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xxxxxx';
# reload the rights
FLUSH PRIVILEGES;
# double check
select * from mysql.user;
Aktualisierung 2019
Diese Antwort ist möglicherweise veraltet -- bitte lesen Sie die stark eigensinnigen Kommentare unten.