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


56

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

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

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

Ответы:


84

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

mysql -u root -p'PASSWORD'

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


Знаете ли вы, как избежать апострофов в пароле?
Стив Мейн

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


2

Зависит от вашей оболочки. Вы используете 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

2

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.