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

56

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

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

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

psynnott
источник

Ответы:

84

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

mysql -u root -p'PASSWORD'

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

psynnott
источник
Знаете ли вы, как избежать апострофов в пароле?
Стив Мейн
3
@ SteveMayne я думаю, что это просто обратная косая черта перед ним
psynnott
3
скобки тоже должны быть в кавычках.
Феликс Ганьон-Гренье
1
В Windows я обнаружил, что должен был использовать двойные кавычки. Одиночные кавычки не работали. (MySQL 5.6)
TheStoryCoder
1
пробелы в пароле также требуют ''
Hafenkranich
12

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

MReiter
источник
2

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

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

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

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

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

antichris
источник