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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.