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: * ? [ < > & ; ! | $ ( )
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?
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
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.
Tente a contra-barra ( \
) desses caracteres especiais.