Рейтинг:-1

Запуск оболочки bash с использованием пароля с заданием cron

флаг cn

У меня есть оболочка bash для резервного копирования базы данных, для открытия которой требуется пароль. Я хочу запустить задание cron, но как мне сделать так, чтобы оно запускалось автоматически без ввода пароля базы данных?

версия сервера Ubuntu: 20.04.3 Версия MySQL: 8.0.26

Команда, которую я пробовал: mysqldump -u root -p "имя БД" > имя_резервной копии.sql когда я нажимаю ввод, система запрашивает пароль. когда я удаляю -п, возникает ошибка.

David avatar
флаг cn
Как выглядит сценарий?
флаг cn
Ray
Помогает ли [это] (https://dba.stackexchange.com/questions/72417/credentials-file-for-running-mysql-related-jobs-через-скрипт)?
флаг in
Если вы используете MySQL в современной версии Ubuntu и намеренно не переопределяли механизм разрешений программного обеспечения, вам не нужно указывать пароль при резервном копировании через `mysqldump`. Системная учетная запись «root» будет подключаться к учетной записи «root» MySQL без пароля, так как это часть администрирования.
Rendiero avatar
флаг cn
@David, я еще не написал команду, потому что сначала хочу знать, как это сделать.
Rendiero avatar
флаг cn
@Ray это похоже на ввод пароля пользователя, а не пароля базы данных mysql
Rendiero avatar
флаг cn
@matigo Я пробовал, но система просит ввести пароль базы данных mysql
флаг in
Пожалуйста [отредактируйте] свой вопрос, чтобы ответить на следующие вопросы: (1) Какую версию Ubuntu вы используете? (2) Какую версию MySQL вы используете? (3) Что *точно* вы пробовали? (с примерами кода) Пока не будут даны ответы на эти три вопроса, почти невозможно будет предложить какое-либо решение.
Rendiero avatar
флаг cn
@matigo Я отредактировал это, вы можете помочь?
Рейтинг:0
флаг in

В принципе, вы можете либо добавить следующее к вам мой.cnfфайл

[mysqldump]
пользователь = mysqluser
пароль=секрет

Кроме того, вы можете экспортировать следующее перед вызовом mysqldump

MYSQL_PWD=ваш секретный пароль

С использованием -п параметр, как вы пытались, настоятельно не рекомендуется по соображениям безопасности.

Дополнительная информация и расширенные решения на https://stackoverflow.com/questions/9293042/how-to-perform-a-mysqldump-без-подсказки-пароля

Рейтинг:0
флаг in

Чтобы использовать mysqldump с корень Учетная запись MySQL, вам нужно будет префикс вашей команды с судо:

sudo mysqldump имя_базы_данных > backup.sql

Если вы хотите запустить это через задание cron, вы можете сделать что-то вроде этого:

0 3 * * * mysqldump имя_базы_данных > /path/to/backups/backup.sql

В качестве бонуса, если вы хотите сжать эту резервную копию и чтобы имя файла содержало дату, вы можете сделать что-то вроде этого:

0 3 * * * mysqldump имя_базы_данных | gzip > /path/to/backups/backup_$(дата +\%Y-\%m-\%d).gz

Обязательно укажите необходимые --рутины и --триггеры варианты в вашем mysqldump command, если ваша база данных содержит хранимые процедуры или триггеры.

Rendiero avatar
флаг cn
Спасибо, я попробую.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.