Po uruchomieniu mysqldump pojawia się błąd:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Ma to sens, ponieważ foobar
jest to starsza maszyna, która już nie istnieje.
Jak zmienić definicję wszystkich moich tabel na „root” @ „localhost”?
mysql
mysqldump
permissions
kfmfe04
źródło
źródło
Odpowiedzi:
Myślę, że baza danych, którą próbujesz zrzucić, zawiera procedury / metody zdefiniowane przez użytkownika podczas logowania jako root @ 'foobar'.
Teraz rozwiązaniem jest zastąpienie programu definiującego dla tych procedur / metod
wtedy możesz wygenerować zrzut bez błędu.
możesz to zrobić jak ...
Uważaj, ponieważ spowoduje to zmianę wszystkich definicji dla wszystkich baz danych.
Spróbuj....!
AKTUALIZACJA 9 lutego 2012 r
Jak zobaczyłem link podany przez @gbn, który jest odpowiedzią udzieloną przez @Rolando, może to być również przypadek. Proszę odwiedzić link
EDIT przez @RolandoMySQLDBA 16.12.2011 11:20 EDT
Chociaż ryzykowna, ta odpowiedź jest dobra. Wyjaśnij: możesz podać bazę danych w zapytaniu w następujący sposób:
źródło
UPDATE
zmieniono tabelę, alemysqldump
nie widzi:mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
. Nawet po ponownym uruchomieniumysql
. Biegnęmysql-5.5.31
.update mysql.proc
podejście rzeczywiście działa.Łatwiejszy w użyciu
--single-transaction
przełącznik:źródło
Najszybszym rozwiązaniem byłoby po prostu ponowne utworzenie definicji, aby istniała, o ile nie powoduje żadnych konfliktów z istniejącymi użytkownikami.
CREATE USER 'root'@'foobar';
źródło
Wyeksportuj wszystkie widoki bazy danych
<DB>
:lub:
Edytuj
views.sql
je i utwórz ponownie:Określ
-u
i-p
przełącz w razie potrzeby.źródło