Для резервного копіювання баз даних MySQL використовується утиліта mysqldump. Щоб не “світити” пароль доступу до бази даних можна використовувати файл .my.cnf такого змісту:
$ cat ~/.my.cnf [client] user=КОРИСТУВАЧ pass=ПАРОЛЬ
Тепер можна запускати mysqldump без вказування паролю:
$ mysqldump -u КОРИСТУВАЧ БАЗА_ДАННИХ > файл_дампу.sql
Але якщо ви спробуєте додати таку команду у crontab, то вас спіткає невдача:
mysqldump: Got error: 1045: Access denied for user 'КОРИСТУВАЧ'@'localhost' (using password: NO) when trying to connect
Справа в тому, що з CRON середовища файл ~/.my.cnf не зчитується. Треба додати спеціальну опцію –defaults-extra-file=’шлях до вашого .my.cnf’
Але і тут все не так просто. Наприклад, наступна команда не буде працювати:
$ mysqldump -u КОРИСТУВАЧ --default-extra-file=/home/КОРИСТУВАЧ/.my.cnf БД > файл_дампу.sql mysqldump: unknown variable 'default-extra-file=/home/КОРИСТУВАЧ/.my.cnf'
Причина в послідовності аргументів. Першим має бути –default-extra-file:
$ mysqldump --default-extra-file=/home/КОРИСТУВАЧ/.my.cnf -u КОРИСТУВАЧ БД > файл_дампу.sql