Quand je lance mysqldump, j'obtiens une erreur:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Cela a du sens car foobar
c’est une machine héritée qui n’existe plus.
Comment changer le défineur de toutes mes tables en 'root' @ 'localhost'?
mysql
mysqldump
permissions
kfmfe04
la source
la source
Réponses:
Ce que je pense, c'est que la base de données que vous essayez de vider contient des procédures / méthodes définies par un utilisateur alors que vous êtes connecté en tant que root @ 'foobar'.
Maintenant, la solution est que vous devez remplacer le définiteur pour que procédures / méthodes
alors vous pouvez générer le dump sans l'erreur.
tu peux faire ça comme ..
Soyez prudent, car cela changera tous les définisseurs de toutes les bases de données.
Essayez-le ....!
MISE À JOUR DU 9 FÉVRIER 2012
Comme j'ai vu le lien donné par @gbn qui est une réponse donnée par @Rolando qui peut aussi être le cas. S'il vous plaît visitez le lien
EDIT by @RolandoMySQLDBA 2011-12-16 11:20 EDT
Bien que risquée, cette réponse est bonne. Juste pour clarifier: Vous pouvez spécifier la base de données dans votre requête comme ceci:
la source
UPDATE
changé la table, maismysqldump
ne le voit pas:mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
. Même après le redémarragemysql
. Je coursmysql-5.5.31
.update mysql.proc
approche fonctionne en effet.Plus facile à utiliser le
--single-transaction
commutateur:la source
La solution la plus rapide serait simplement de recréer le définit afin qu'il existe, tant qu'il ne crée aucun conflit avec les utilisateurs existants.
CREATE USER 'root'@'foobar';
la source
Exportez toutes les vues de la base de données
<DB>
:ou:
Editez
views.sql
et recréez-les:Spécifiez
-u
et-p
permutez si nécessaire.la source