Wenn ich mysqldump starte, erhalte ich eine Fehlermeldung:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Dies ist sinnvoll, da foobar
es sich um eine Legacy-Maschine handelt, die nicht mehr existiert.
Wie ändere ich den Definer aller meiner Tabellen auf 'root' @ 'localhost'?
mysql
mysqldump
permissions
kfmfe04
quelle
quelle
Antworten:
Ich denke, dass die Datenbank, die Sie sichern möchten, Prozeduren / Methoden enthält, die von einem Benutzer definiert wurden, als er als root @ 'foobar' angemeldet war.
Jetzt besteht die Lösung darin, dass Sie die Definer für diese Prozeduren / Methoden ersetzen müssen
dann können Sie den Speicherauszug ohne den Fehler generieren.
Sie können dies tun, wie ..
Seien Sie vorsichtig, da dies alle Definitionen für alle Datenbanken ändert.
Versuch es....!
UPDATE am 9. Februar 2012
Da ich den Link von @gbn gesehen habe, der eine Antwort von @Rolando ist, kann das auch der Fall sein. Bitte besuchen Sie den Link
BEARBEITEN von @RolandoMySQLDBA 16.12.2011 11:20 EDT
Diese Antwort ist zwar riskant, aber gut. Zur Verdeutlichung: Sie können die Datenbank in Ihrer Abfrage wie folgt angeben:
quelle
UPDATE
die Tabelle geändert, abermysqldump
sieht es nicht:mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
. Auch nach dem Neustartmysql
. Ich rennemysql-5.5.31
.update mysql.proc
Ansatz funktioniert in der Tat.Einfachere Verwendung des
--single-transaction
Schalters:quelle
Die schnellste Lösung wäre lediglich, den Definer neu zu erstellen, sofern er nicht zu Konflikten mit vorhandenen Benutzern führt.
CREATE USER 'root'@'foobar';
quelle
Exportieren Sie alle Ansichten der Datenbank
<DB>
:oder:
Bearbeiten Sie sie
views.sql
und erstellen Sie sie neu:Geben Sie an
-u
und-p
wechseln Sie bei Bedarf.quelle