Я написал простой сценарий оболочки для дампа конкретной базы данных 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
Не забудьте убрать перенаправление вывода.