50

Я запускаю mysqldump через скрипт bash и столкнулся с проблемой с паролем, который содержит специальные символы.

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Как мне избежать пароля?

4 ответа4

81

Я нашел ответ. Вы должны указать пароль, например:

mysql -u root -p'PASSWORD'

Вы должны сделать это, если пароль содержит один из следующих символов: * ? [ < > & ; ! | $ ( )

11

когда вы используете кавычки, убедитесь, что нет места:
между -p и 'PASSWORD' или
между --password= и 'PASSWORD'

правильный:
mysql -u root -p'PASSWORD'
mysql -u root --password='PASSWORD'

не работает:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

Вы также можете определить переменную и затем использовать ее для команды (все еще без пробелов между ними)MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD

2

Зависит от вашей оболочки. Вы используете Microsoft Windows или Linux? Если вы используете Linux/BASH, вполне вероятно, что $$ интерпретируется как ваш текущий идентификатор процесса. Вы пытались поставить обратную косую черту перед каждым знаком доллара? например

mysqldump \
  -hlocalhost \
  -uUSERNAME \
  -pPA\$\$W0RD \
  DATABASE \
| gzip -c \
> /home/USERNAME/backups-mysql/BACKUP.gz

Обратите внимание, что gzip, вероятно, требует параметр "-c", если вы хотите сжать до STDOUT.

2

Попробуйте использовать обратную косую черту (\) этих специальных символов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .