MySQL эквивалентен .pgpass или автоматической аутентификации в задании cron для mySQL

8

Я пишу сценарий bash для резервного копирования моих баз данных. Большинство из них являются postgresql, а в postgres есть способ избежать аутентификации, создав файл ~ / .pgpass, который содержит пароль postgres. Я поместил это в домашний каталог root и сделал chmod 0600, чтобы root мог создавать дамп баз данных postgres без аутентификации. Теперь я хочу сделать нечто подобное для mysql, хотя у меня есть только одна база данных mysql. Как я могу это сделать? Я не хочу указывать пароль в командной строке для mysqldump, потому что это часть скрипта, которая может быть несколько видна другим пользователям. Есть ли лучший способ (т.е. встроенный в mysql) сделать это, чем сделать файл, который может прочитать только root, а затем прочитать его, чтобы получить пароль mysql, а затем использовать его в сценарии bash в качестве переменной?

Ибрагим
источник
Хм, как ни странно, я нашел что-то многообещающее в Google, а не в собственном поиске serverfault: stackoverflow.com/questions/601995/…
Ибрагим
Да, блин, видимо, у меня нет поисковиков.
Ибрагим

Ответы:

6

Создайте ~/.my.cnfфайл для пользователя, выполняющего mysql. Он должен содержать следующее:

[client]
user = root
password = yourpassword
сигнализатор
источник
Я хотел бы добавить одну вещь: если вы запускаете скрипт с использованием sudo, вам нужно использовать -H, чтобы убедиться, что он использует домашний каталог root. Но я думаю, что проблема не должна быть проблемой в работе корневого cron, правильно?
Ибрагим
3
Но как это обрабатывается для нескольких учетных записей? Это будет работать для localhost, но что если я захочу сохранить свой логин для удаленного сервера?
Cerin