Escapando uma senha usando o console mysqldump

48

Estou executando um mysqldump através 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?

    
por psynnott 25.03.2010 / 10:49

4 respostas

78

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

mysql -u root -p'PASSWORD'

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

    
por 25.03.2010 / 12:44
9

quando você usa as aspas, verifique se não há espaço:
entre -p e 'PASSWORD' ou
entre --password= e 'PASSWORD'

correto:
mysql -u root -p'PASSWORD' e 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 entre elas) MSQLPWD='PASSWORD' e mysql -u root -p$MSQLPWD

    
por 29.02.2012 / 16:49
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ê quiser compactar para STDOUT.

    
por 25.03.2010 / 12:27
2

Tente a contra-barra ( \ ) desses caracteres especiais.

    
por 25.03.2010 / 12:38