If you want to do command-line MySQL administration like restoring databases or dumping statistics, you need the root account and it's password. Or do you?

On Ubuntu / Debian, you don't. This is usefull if you

  • Have lost your password (reset it this way)
  • Want to automate tasks (it's a bad idea to pass around root passwords)

So How Does This Work

Well normally you would access MySQL like this right?

$ mysql -h localhost -u root -p
# Enter password: XYZ

Or you can automate it by supplying it in the same command:

$ mysql -h localhost -u root -pXYZ

Pretty messy if you ask me.

What a lot of people don't know is that there is an account that's used by debian related systems to restart the service, perform checks, etc.

The account is called debian-sys-maint, it's credentials are stored in /etc/mysql/debian.cnf and if you have root access on a database server's shell you're in business. You can either look up the account, or tell mysql to do it for you:

$ mysql --defaults-file=/etc/mysql/debian.cnf

And Bob's your uncle.