Řešení 1:
K čemu se používá debian-sys-maint?
Jedna hlavní věc, pro kterou se používá, je sdělování serveru, aby protokoly roloval. Potřebuje alespoň oprávnění k opětovnému načtení a vypnutí.
Viz soubor /etc/logrotate.d/mysql-server
Používá jej /etc/init.d/mysql
skript pro získání stavu serveru. Používá se k řádnému vypnutí/znovu načtení serveru.
Zde je citace z 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.
Jaký je nejjednodušší způsob, jak jej obnovit poté, co jsem jej ztratil?
Nejlepší plán je prostě to neztratit. Pokud opravdu ztratíte heslo, resetujte ho pomocí jiného účtu. Pokud jste ztratili všechna oprávnění správce na serveru mysql, postupujte podle pokynů pro resetování hesla uživatele root a poté opravte debian-sys-maint
.
Tento příkaz můžete použít k vytvoření souboru SQL, který můžete později použít k opětovnému vytvoření účtu.
mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql
Je heslo v /etc/mysql/debian.cnf již zahašováno
Heslo není při instalaci zahašováno/zašifrováno, ale nové verze mysql nyní mají způsob, jak zašifrovat přihlašovací údaje (viz:https://serverfault.com/a/750363).
Řešení 2:
Soubor debian-sys-maint uživatel je ve výchozím nastavení kořenový ekvivalent . Používají ho určité skripty údržby na systémech Debian a jako vedlejší efekt umožňuje uživatelům s přístupem root na krabici zobrazit heslo ve formátu prostého textu v /etc/mysql/debian.cnf (dobré nebo špatné?)
Uživatele můžete znovu vytvořit:
GRANT ALL PRIVILEGES on *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'your password' WITH GRANT OPTION;
Jen se ujistěte, že se heslo shoduje to v /etc/mysql/debian.cnf
Řešení 3:
Můžete také:
sudo dpkg-reconfigure mysql-server-5.0
Což vám dá možnost znovu vytvořit uživatele debian-sys-maint. Stávající uživatelé a databáze jsou v bezpečí.
Řešení 4:
Chtěl jsem jen komentovat, ale myslím, že správná syntaxe si zaslouží svůj vlastní vstup. Tím vytvoříte debian-sys-maint uživatel:
mysql> GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'plaintextpassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
Pokud stále máte soubor /etc/mysql/debian.cnf, použijte tam heslo.
Klidně vymyslete paranoidnější bezpečné řešení.
Řešení 5:
Pokud potřebujete přidat debian-sys-maint
uživatel jen pro logrotate.d
pro účely, neměli byste udělení ALL PRIVILEGES
nebo GRANT OPTION
-- to je zbytečná obří bezpečnostní díra. Místo toho můžete přidat uživatele pomocí RELOAD
privilegium, jako je toto (za předpokladu, že ke své db přistupujete jako root
a xxxxxx nahradíte svým heslem)
# 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;
Aktualizace pro rok 2019
Tato odpověď může být zastaralá – podívejte se prosím níže na komentáře se silnými názory.