Что именно эта ошибка?
База данных, которую я использую, - это MySQL 5.1. Я указал, верю, что правильно connectionstring в моем web.config. но когда я запускаю свое веб-приложение. это исключает это: -
MySql.Data.MySqlClient.MySqlException: Пользователь, указанный как определитель ('root' @'%'), не существует
Любая помощь. Почему я получаю это?
Ответы
Ответ 1
Исходный код для хранимых процедур, которые вы загружали, вероятно, содержит "DEFINER = root @'%'" как часть определения - выглядящий примерно так:
create definer='root'@'%' procedure sp_test() begin end;
Проблема заключается в том, что у вас нет учетной записи в вашей системе для "root" @ "%". Это легко продемонстрировать. Из командной строки MySQL:
show grants for 'root'@'%';
Я ожидаю, что это вернется с сообщением об ошибке:
ERROR 1141 (42000): There is no such grant defined for user 'root' on host '%'
Исправление заключается в изменении источника хранимых процедур или создании отсутствующей учетной записи:
grant all on *.* to 'root'@'%' identified by 'password' with grant option;
Как правило, не рекомендуется иметь такую мощную учетную запись из любого места, но это уже другая история.
Ответ 2
Я знаю, что этот ответ приходит очень поздно, но я нашел решение, которое не связано с изменением каких-либо прав вообще.
Войдите в свои хранимые процедуры и удалите предложение DEFINER
. Сервер должен написать в новом DEFINER, который соответствует информации о пользователе, с которой вы вошли.
Работал для меня...
Ответ 3
Это в хранимой процедуре? Тогда возможно этот пост в блоге помогает (внимание мое).
Все настройки были прекрасными, и мне было интересно, что вызывает проблему. Сначала я поспешил подумать, что это может быть кеш, поскольку я недавно попросил xcache на нашем сервере.
Но это не так. Ошибка была намного глупее, чем можно себе представить. В этом конкретном script используется хранимая процедура для вставки/извлечения данных в/из MySQL. Пользователь, который создал sp, был тем, кто был удален. И в этом была проблема. Термин "Definer" с точки зрения MySQL - это тот, кто создает хранимую процедуру и хранимую процедуру, которая должна существовать для пользователя.