Когда я запускаю mysqldump, я получаю сообщение об ошибке:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Это имеет смысл, потому что foobar
это устаревшая машина, которой больше не существует.
Как мне изменить определитель всех моих таблиц на «root» @ «localhost»?
mysql
mysqldump
permissions
kfmfe04
источник
источник
Ответы:
Я думаю, что база данных, которую вы пытаетесь создать, содержит процедуры / методы, которые были определены пользователем при входе в систему как root @ 'foobar'.
Теперь решение состоит в том, что вы должны заменить определитель для этих процедур / методов
тогда вы можете создать дамп без ошибок.
Вы можете сделать это как ...
Будьте осторожны, потому что это изменит все определители для всех баз данных.
Попытайся....!
ОБНОВЛЕНИЕ 9 февраля 2012
Как я увидел ссылку, предоставленную @gbn, которая является ответом, данным @Rolando, который также может иметь место. Пожалуйста, перейдите по ссылке
РЕДАКТИРОВАТЬ @RolandoMySQLDBA 2011-12-16 11:20 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Хотя это рискованно, этот ответ хорош. Просто чтобы уточнить: вы можете указать базу данных в вашем запросе следующим образом:
источник
UPDATE
изменил таблицу, ноmysqldump
не видит его:mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
. Даже после перезагрузкиmysql
. Я бегуmysql-5.5.31
.update mysql.proc
подход действительно работает.Проще использовать
--single-transaction
переключатель:источник
Самым быстрым решением было бы просто воссоздать определитель таким образом, чтобы он существовал, если только он не создает никаких конфликтов с существующими пользователями.
CREATE USER 'root'@'foobar';
источник
Экспортировать все виды базы данных
<DB>
:или:
Отредактируйте
views.sql
и воссоздайте их:Укажите
-u
и-p
переключайте при необходимости.источник