É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?

Psynnott
la source

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: * ? [ < > & ; ! | $ ( )

Psynnott
la source
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

MReiter
la source
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.

PP.
la source
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
2

Essayez d’inverser \les caractères spéciaux ( ).

antichris
la source