Soluzione 1:
A cosa serve debian-sys-maint?
Una delle cose principali per cui viene utilizzato è dire al server di eseguire il roll dei log. Richiede almeno il privilegio di ricarica e spegnimento.
Guarda il file /etc/logrotate.d/mysql-server
È usato dal /etc/init.d/mysql
script per ottenere lo stato del server. Viene utilizzato per arrestare/ricaricare con garbo il server.
Ecco la citazione dal 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.
Qual è il modo più semplice per ripristinarlo dopo averlo perso?
Il miglior piano è semplicemente non perderlo. Se perdi davvero la password, reimpostala, utilizzando un altro account. Se hai perso tutti i privilegi di amministratore sul server mysql segui le guide per reimpostare la password di root, quindi ripara il debian-sys-maint
.
Potresti usare un comando come questo per creare un file SQL che puoi usare in seguito per ricreare l'account.
mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql
La password in/etc/mysql/debian.cnf è già sottoposta ad hashing
La password non è sottoposta ad hashing/crittografata quando viene installata, ma le nuove versioni di mysql ora dispongono di un modo per crittografare le credenziali (vedi:https://serverfault.com/a/750363).
Soluzione 2:
Il debian-sys-maint user è per impostazione predefinita un equivalente root . Viene utilizzato da alcuni script di manutenzione sui sistemi Debian e, come effetto collaterale, consente agli utenti con accesso root sulla scatola di visualizzare la password in chiaro in /etc/mysql/debian.cnf (buona o cattiva?)
Puoi ricreare l'utente tramite:
GRANT ALL PRIVILEGES on *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'your password' WITH GRANT OPTION;
Assicurati solo che la password corrisponda quello in /etc/mysql/debian.cnf
Soluzione 3:
Potresti anche:
sudo dpkg-reconfigure mysql-server-5.0
Che ti darà la possibilità di ricreare l'utente debian-sys-maint. Gli utenti e i database esistenti sono al sicuro.
Soluzione 4:
Volevo solo commentare, ma penso che la sintassi sia corretta merita il suo ingresso. Questo creerà il file debian-sys-maint utente:
mysql> GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'plaintextpassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
Se hai ancora il file /etc/mysql/debian.cnf, usa semplicemente la password lì dentro.
Sentiti libero di pensare a qualcosa di più paranoico soluzione sicura.
Soluzione 5:
Se devi aggiungere il debian-sys-maint
utente solo per logrotate.d
scopi, non concedere ALL PRIVILEGES
o il GRANT OPTION
- questo è un enorme buco di sicurezza non necessario. Invece, puoi semplicemente aggiungere l'utente con RELOAD
privilegi come questo (supponendo che tu stia accedendo al tuo db come root
e sostituisci xxxxxx con la tua password)
# 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;
Aggiornamento 2019
Questa risposta potrebbe non essere aggiornata:consulta i commenti fortemente supponenti di seguito.