mysqldump запит на пароль в оболонці


9

Я написав простий скрипт оболонки, щоб скинути конкретну базу даних mysql. Проблема полягає в тому, що він пропонує мені пароль, навіть якщо я надаю. Myql db має версію 5.0.27, якщо це має значення. Ось конкретний рядок, який я використовую.

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

Я спробував кілька варіацій, але безрезультатно.

Відповіді:


4

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

Отже, я пропоную розмістити echoкоманду на початку цього рядка і повторно запустити ваш сценарій, наприклад:

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

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


1
До, це була дурна змінна, мала пропуск у великих літери, коли вона була встановлена ​​проти малих літер у верхньому рядку. дякую хлопці
aduljr

18

Кращим рішенням було б зберігати ім’я користувача та пароль у файлі конфігурації та вказати на цей файл конфігурації. Маючи його в командному рядку, кожен, хто може запустити 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 , який дозволяє зберігати облікові дані у зашифрованому файлі. Дякую Джованні за те, що мені це згадали.


його конкретний користувач для цієї бази даних, має лише достатній дозвіл на виконання резервного копіювання. Тільки двоє людей мають доступ до цього сервера, моя та ще одна людина. Але я використаю цю ідею файлу cnf. ніколи не знав про цей варіант. дякую
aduljr

3
Я знаю, що це стара відповідь, але все ж з’являється при пошуку, як надійно передати пароль, і він пов’язаний з іншими публікаціями. Використовуючи версію 5.5, мені довелося інкапсулювати сильний пароль у один тик у файлі config, наприклад, якщо мій пароль aoeu1234, у моєму конфігураційному файлі є password = 'aoeu1234'; інакше ви отримаєте несанкціоновану помилку.
Деймон

Цікаво, чи є рішення, яке не включає пароль у явному тексті у файлі .cnf.
Боб Штейн

@Zoredache, Як "кожен, хто може запустити PS, міг знайти пароль для вашого сервера"?
Pacerier

@Damon, а що робити, якщо у вашому паролі є ці кліщі?
Pacerier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.