Выход из пароля с помощью консоли mysqldump

40596
psynnott

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

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

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

48

4 ответа на вопрос

79
psynnott

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

mysql -u root -p'PASSWORD' 

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

Знаете ли вы, как избежать апострофов в пароле? Steve Mayne 11 лет назад 0
@ SteveMayne я думаю, что это просто обратная косая черта перед ним psynnott 11 лет назад 3
скобки тоже должны быть в кавычках. Félix Gagnon-Grenier 10 лет назад 3
В Windows я обнаружил, что должен был использовать двойные кавычки. Одиночные кавычки не работали. (MySQL 5.6) TheStoryCoder 9 лет назад 1
пробелы в пароле также требуют '' Hafenkranich 6 лет назад 1
9
MReiter

при использовании кавычек, убедитесь, что нет пробела:
между -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
PP.

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

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

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

Я использую пароль не PA $$ W0RD, но я использовал его в качестве примера. Фактический пароль, который я использую, имеет амперсанд, и это является причиной проблемы. Я использовал обратную косую черту, как вы предложили, но она не сработала. psynnott 14 лет назад 0
2
U-D13

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