Эта ошибка существует на bugs.mysql.com с 2007 года, и этот поток в основном представляет собой попугай всех этих неправильных ответов даже год назад.
Согласно документации MySQL, такие команды, какCREATE USER
, GRANT
, REVOKE
и DROP USER
не требуют последующей команды FLUSH PRIVILEGES
.Понятно почему, если кто-то читает документы.Это потому, что непосредственное изменение таблиц MySQL не перезагружает информацию в память;все же множество решений этой ошибки утверждают, что FLUSH PRIVILEGES
является ответом.
Это также может даже не быть ошибкой.Это заговор документации - документы могут отличаться в одном критическом месте от версии к версии.
13.7.1.2.Синтаксис DROP USER
...
Пользователь DROP USER [, user] ...
...
DROP USER 'jeffrey' @ 'localhost';
Если вы указываете только часть имени пользователя в имени учетной записи, используется часть имени хоста в «%».
DROP USER
, как представлено в MySQL 5.0.0, удаляет только те учетные записи, которые не имеют привилегий.В MySQL 5.0.2 он также был изменен для удаления привилегий учетной записи.Это означает, что процедура удаления учетной записи зависит от вашей версии MySQL.
Начиная с MySQL 5.0.2, вы можете удалить учетную запись и ее привилегии следующим образом:
DROP USER user;
Оператор удаляет привилегиистроки для учетной записи из всех таблиц предоставления.
Единственный раз, когда я получаю эту ошибку, это когда я делаю DROP USER user
;как подсказывает документ, но MySQL не рассматривает «%» как подстановочный знак, который отбрасывает всех пользователей на всех хостах.Это не так дико в конце концов.Или, может быть, это иногда работает, когда он удаляет пользователя localhost, а затем пытается удалить его в%.
Мне ясно, что когда он пытается удалить пользователя в%, он выдает ошибкусообщение и выходит.Последующее CREATE USER
на локальном хосте завершится ошибкой, потому что пользователь localhost никогда не удалялся.Похоже, нет необходимости тратить время на копки в таблицах грантов в поисках призраков, как предложил один из авторов.
Я вижу 7 голосов за:
УБРАТЬ ПОЛЬЗОВАТЕЛЯ 'jack @ localhost';// полностью удаляем учетную запись
Что интерпретируется как DROP USER 'jack@localhost'@'%';
# неправильно
На самом деле, похоже, существует настоящая ошибка, которая генерирует то же сообщение об ошибке, но этос первым созданным пользователем (после установки нового сервера MySQL) удаляется.Была ли эта ошибка исправлена, я не знаю;но я не помню, чтобы это происходило в последнее время, и сейчас я вернусь к версии 5.5.27.