Échapper à un mot de passe en utilisant la console mysqldump


56

J'exécute un mysqldump via un script bash et j'ai rencontré un problème avec un mot de passe contenant des caractères spéciaux.

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

Comment puis-je échapper le mot de passe?

Réponses:


84

J'ai trouvé la réponse. Vous devez citer le mot de passe, comme ceci:

mysql -u root -p'PASSWORD'

Vous devez le faire si le mot de passe contient l’un des caractères suivants: * ? [ < > & ; ! | $ ( )


Savez-vous comment échapper aux apostrophes avec le mot de passe?
Steve Mayne

3
@SteveMayne Je pense que c'est juste une barre oblique inverse devant elle
Psynnott

3
les parenthèses doivent également être entre guillemets.
Félix Gagnon-Grenier

1
Sur Windows, j'ai trouvé que je devais utiliser des guillemets doubles. Les citations simples ne fonctionnaient pas. (MySQL 5.6)
TheStoryCoder

1
les espaces dans le mot de passe requièrent également le ''
Hafenkranich

12

lorsque vous utilisez les guillemets, assurez-vous qu'il n'y a pas d'espace:
entre -pet 'PASSWORD' ou
entre --password=et'PASSWORD'

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

ne marche pas:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

vous pouvez également définir une variable, puis l'utiliser pour la commande (toujours sans espace) MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD


2

Cela dépend de votre coquille. Utilisez-vous Microsoft Windows ou Linux? Si vous utilisez Linux / BASH, il est probable que $$ soit interprété comme votre ID de processus actuel. Avez-vous essayé de mettre une barre oblique inverse devant chaque signe dollar? par exemple

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

Notez que gzip nécessite probablement l’option "-c" si vous voulez compresser en STDOUT.


Le mot de passe que j'utilise n'est pas PA $$ W0RD mais je l'ai utilisé à titre d'exemple. Le mot de passe que j'utilise a une esperluette et c'est ce qui cause le problème. J'ai utilisé la barre oblique inverse comme vous l'avez suggéré, mais cela n'a pas fonctionné.
Psynnott

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.