What is debian-sys-maint used for?
One major thing it is used for is telling the server to roll the logs. It needs at least the reload and shutdown privilege.
See the file /etc/logrotate.d/mysql-server
It is used by the /etc/init.d/mysql
script to get the status of the server. It is used to gracefully shutdown/reload the server.
Here is the quote from the 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.
What is the easiest way to restore it after I've lost it?
The best plan is to simply not lose it. If you really lose the password, reset it, using another account. If you have lost all admin privileges on the mysql server follow the guides to reset the root password, then repair the debian-sys-maint
.
You could use a command like this to build a SQL file that you can use later to recreate the account.
mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql
Is the password in
/etc/mysql/debian.cnf already hashed
The password is not hashed/encrypted when installed, but new versions of mysql now have a way to encrypt the credentials (see: https://serverfault.com/a/750363).
Try putting /bin/bash
in front of your command. You can't use relative paths because there is no environment to keep track of them. If you run everything in a bash-shell, bash will keep track of these things for you. Same goes for crontab
Best Answer
Debian 9 (like many other current Linux distributions) uses systemd to start and manage your system and services.
You'll be facing a bit of a learning curve compared to adding lines to
rc.local
but writing unit files (systemd jargon for what is effectively the equivalent of a start and stop script for a service) will be usefull skill to learn.The Debian specific documentation on systemd is found on https://wiki.debian.org/systemd
The page https://wiki.debian.org/systemd/Services contains detailed step-by-step intructions for what is needed to write your own (minimal) unit file:
Create the unit file "myservice.service" in the directory
/etc/systemd/system/
Reload systemd to pick up your changed/new unit files with:
systemctl daemon-reload
Enable and start the new service