Назад | Перейти на главную страницу

mysqldump запрашивает пароль в сценарии оболочки

Я написал простой сценарий оболочки для дампа конкретной базы данных mysql. проблема в том, что он запрашивает у меня пароль, хотя я предоставляю. MySQL db - это версия 5.0.27, если это важно. Вот конкретная строка, которую я использую.

$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE

Я пробовал несколько вариантов, но безуспешно.

Лучшим решением было бы сохранить имя пользователя и пароль в файле конфигурации и указать на этот файл конфигурации. Имея его в командной строке, любой, кто умеет запускать ps, может найти пароль для вашего сервера.

Пройти --defaults-extra-file=/pathto/database.cnf в дамп mysql.

Файл конфигурации должен выглядеть так. Установите разрешения файловой системы так, чтобы только процесс резервного копирования мог открыть файл конфигурации.

[client]
host     = servername.domain.tld
user     = backup
password = strongpassword

Обновление (2016-06-29) Если вы используете mysql 5.6.6 или выше, вы должны посмотреть на mysql_config_editor инструмент, позволяющий хранить учетные данные в зашифрованном файле. Благодаря Джованни за то, что сказал мне об этом.

Я готов поспорить, что $MyPass неправильно настроен в вашем сценарии. Если какой-либо из инструментов командной строки mysql получает сообщение -p за которым сразу не следует пароль, они предполагают, что должны запросить пароль. Если, с другой стороны, вы указали неверный пароль (или неправильное имя пользователя или что-то подобное), соединение просто не удастся.

Итак, предлагаю разместить echo в начале этой строки и перезапустите ваш скрипт, например:

echo $MYSQLDUMP -u backup -p$MyPass $DB

Не забудьте убрать перенаправление вывода.