web-dev-qa-db-fra.com

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

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?

52
psynnott

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

83
psynnott

lorsque vous utilisez les guillemets, assurez-vous qu'il n'y a pas d'espace:
entre -p et '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

12
MReiter

Cela dépend de votre shell. 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.

2
PP.

Essayez de supprimer (\) ces caractères spéciaux.

2
U-D13