mysqldump - Accès refusé pour l'utilisateur
Quand je lance la commande suivante à partir d'ouvrir un shell de commande windows (Win7), il fonctionne très bien, et la sauvegarde est écrit à mon système de fichiers. La base de données MySQL sur un serveur linux distant.
"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump" -h *******.com -u ******* -p***** --databases ******* > "C:\******\_Database\backups\DB_%date:~0,3%.bak"
Mais quand j'ai mis la même commande dans un fichier de commandes (que ce soit.chauve-souris) et exécutez le fichier bat (avec une "pause" de la commande à la fin), j'obtiens l'erreur "a Reçu l'erreur: 1045: Access denied for user 'moi'@'c-24-2-64-138.hsd1.ut.comcast.net' (using password: YES) lorsque l'on tente de se connecter".
Pourquoi faut-il travailler à partir de l'intérieur d'ouvrir un shell de commande, mais pas lors de l'exécution à partir d'un fichier bat? Comment puis-je faire ce travail?
OriginalL'auteur HerrimanCoder | 2012-04-24
Vous devez vous connecter pour publier un commentaire.
Vous devez vous échapper le mot de passe à l'aide de guillemets simples:
-p'password'
.La commande correcte serait:
OriginalL'auteur takeshin
J'ai été confronté à un problème similaire. J'ai 4 bases qui soutiennent bien. La 5ème ne serait pas de sauvegarde de n'importe quel utilisateur j'ai tenté avec la même racine. Il s'avère que le symbole ^ le mot de passe a été le problème pour moi. Une fois j'ai changé le mot de passe des utilisateurs pour inclure ! plutôt que ^ tout a fonctionné immédiatement.
OriginalL'auteur Dave Snape
Ok, j'ai compris cette exaspérante chose. Le problème a été mon mot de passe lui-même: 4$5%6^^7^&deZeYPdx5014VB3C#
Quand j'ai changé le mot de passe, tout a fonctionné. Certains de ces caractères là jacks windows fichier de commandes d'exécution. Je soupçonne que c'est le signe%, mais difficile de savoir. Doit être un bug dans windows, compte tenu du fait qu'il fonctionne très bien à partir de l'interface de commande, mais pas dans le fichier bat OU cmd fichier.
Lorsqu'il est spécifié dans un script BASH, à l'aide du paramètre de substitution, le paramètre doit être entre guillemets SIMPLES, afin d'empêcher les autres de l'évaluation d'une chaîne qui contient une combinaison de symboles et de lettres ($ être un problème ici).
OriginalL'auteur HerrimanCoder
Avez-vous essayé
--user=**** --password=****
?Je me souviens d'avoir quelques problèmes de prise en mysqldump pour ramasser le nom d'utilisateur et le mot de passe dans les scripts, et a constaté que ce paramètre a travaillé. Désolé, mais je crains que je ne me souviens plus sur ce que les questions ont été ou ce qui l'a amené...
Aussi, "==" ne fonctionne pas, un seul signe égal des œuvres.
toutes mes excuses, faute de frappe de ma part, modifiée en conséquence. Content que tu ai eu de travail.
Je n'ai pas de travail. Je sais juste qu' == ne fonctionne pas. Toujours à la recherche d'une solution à cette question.
avez-vous essayé avec un seul '=' ? J'utilise ce format, donc je sais que ça fonctionne (sur ma machine).
OriginalL'auteur amaidment
La suite travaillé pour moi, déjà le mot de passe n'est pas accepté donc essayé sans les guillemets autour du mot de passe...
Voici ce que j'ai utilisé
mysqldump-h localhost -u username-pmotdepasse --les bases de données databasename > "C:\backups\dbbkup.%DATE:/=%.bak"
OriginalL'auteur theghost12