Escapando uma senha usando o console do mysqldump

56

Estou executando um mysqldump por meio de um script bash e encontrei um problema com uma senha que contém caracteres especiais.

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

Como faço para escapar da senha?

psynnott
fonte

Respostas:

84

Eu encontrei a resposta. Você precisa citar a senha, assim:

mysql -u root -p'PASSWORD'

Você deve fazer isso se a senha tiver um dos seguintes caracteres: * ? [ < > & ; ! | $ ( )

psynnott
fonte
Você sabe como escapar dos apóstrofos dentro da senha?
Steve Mayne 14/05
3
@SteveMayne eu acho que é apenas uma barra invertida antes
psynnott
3
parênteses também precisam estar entre aspas.
Félix Gagnon-Grenier
1
No Windows, descobri que tinha que usar aspas duplas. Aspas simples não funcionaram. (MySQL 5.6)
TheStoryCoder 25/03
1
espaços em branco na senha também exigem o ''
Hafenkranich
12

ao usar as aspas, verifique se não há espaço:
entre -pe 'PASSWORD' ou
entre --password=e'PASSWORD'

corrigir:
mysql -u root -p'PASSWORD'
mysql -u root --password='PASSWORD'

não funciona:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

você também pode definir uma variável e usá-la para o comando (ainda sem espaços no meio) MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD

MReiter
fonte
2

Depende do seu shell. Você está usando o Microsoft Windows ou Linux? Se você estiver usando Linux / BASH, é provável que $$ esteja sendo interpretado como seu ID de processo atual. Você já tentou colocar uma barra invertida na frente de cada cifrão? por exemplo

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

Note que o gzip provavelmente requer a opção "-c" se você deseja compactar no STDOUT.

PP.
fonte
A senha que estou usando não é PA $$ W0RD, mas usei isso como exemplo. A senha real que estou usando tem um e comercial e é isso que está causando o problema. Usei a barra invertida como você sugeriu, mas não funcionou.
psynnott
2

Tente barra invertida ( \) esses caracteres especiais.

antichris
fonte