I am using Percona Server (a MySQL fork) on Ubuntu. The package (very likely the regular MySQL package as well) comes with a maintenance account called debian-sys-maint
. In order for this account to be used, the credentials are created when installing the package; and they are stored in /etc/mysql/debian.cnf
.
And now the surprise: A symlink /root/.my.cnf
pointing to /etc/mysql/debian.cnf
gets installed as well.
This file is an option file read automatically when using mysql
or mysqldump
. So basically you then had login credentials given twice - in that file and on command line. This was the problem I had.
So one solution to avoid this condition is to use --no-defaults
option for mysqldump
. The option file then won't be read. However, you provide credentials via command line, so anyone who can issue a ps
can actually see the password once the backup runs. So it's best if you create an own option file with user name and password and pass this to mysqldump
via --defaults-file
.
You can create the option file by using mysql_config_editor
or simply in any editor.
Running mysqldump
via sudo
from the command line as root
works, just because sudo
usually does not change $HOME
, so .my.cnf
is not found then. When running as a cronjob, it is.