web-dev-qa-db-fra.com

Comment fournir un mot de passe lors de l'exécution de `mysqldump` via le script shell

J'ai écrit un fichier batch qui établit la connexion au serveur Linux, ce que je suis capable de faire. Après cela, j'essaie de placer mysqldump dans un répertoire déterminé. est rien mais vide, et manuellement je dois appuyer sur Enter, Je dois juste exécuter mon script qui appuie simplement sur Enter afin que l'exécution se fasse automatiquement. Ci-dessous quelques détails.

fichier batch:

plink.exe -ssh user@Host -m command.txt

command.txt:

mysqldump -uve -p -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz

C'est l'image qui me demande d'entrer le mot de passe: this is the image which is prompting me to enter password

Veuillez me fournir des informations pour que je puisse saisir le mot de passe et exécuter ma commande automatiquement.

1
infinitoz

Pour autant que je sache, c'est la commande que vous exécutez qui demande un mot de passe. Votre ligne est:

mysqldump -uve -p -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz

Si nous nous dirigeons vers man mysql, nous lisons ce qui suit:

Le mot de passe à utiliser quand on se connecte au serveur. Si vous utilisez le formulaire d'option abrégée (-p), vous ne pouvez pas laisser d'espace entre l'option et le mot de passe. Si vous omettez la valeur du mot de passe après l'option --password ou -p sur la ligne de commande, mysql vous en demandera un.

Vous n'avez rien spécifié, car le Shell menace l'espace en tant que séparateur d'arguments. Définissez un mot de passe pour l'utilisateur mysql, supprimez -p du fichier command.txt ou ... modifiez votre commande comme suit:

mysqldump -uve --password="" -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz

Ici, nous spécifions explicitement un mot de passe vide.

6
vidarlo