При попытке выполнить операцию удаления для таблицы mysql сообщает следующую ошибку:
Код ошибки 1227: доступ запрещен; вам нужна СУПЕР привилегия для этой операции.
Однако моему пользователю предоставлена эта привилегия для всех таблиц в схеме:
ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ
myschema
. * TO 'my_admin' @ '%'
Почему он запрашивает у меня СУПЕР привилегию для удаления?
Вы уверены, что вошли в систему не как какой-то менее привилегированный пользователь? Вы получаете привилегии пользователя, под которым вы вошли в систему, а не всех пользователей, под которыми вы, возможно, могли бы войти.
Если myadmin@10.11.12.13
имеет меньше привилегий, чем myadmin@%
и вы входите в систему с 10.11.12.13, вы получаете привилегии первого.
Делать \s
из клиента mysql, чтобы узнать, какой вы «текущий пользователь», затем SHOW GRANTS FOR
этот пользователь.
Ты сделал FLUSH PRIVILEGES
после выполнения GRANT
, Я полагаю.
У меня такая же проблема. Причиной этого была неполная установка. Мне не удалось запустить mysql из командной строки с доступом root, потому что я не установил пароль root. Поэтому я переустановил mysql (в этом не было необходимости) - о да, сначала сделал резервную копию моих таблиц с помощью mysqldump: mysqldump --all-databases> huge_dump.dump (пароль не запрашивался) Вот ключ - Run сценарий mysql_secure_installation:
mysql_secure_installation
Bla Bla Bla - - - Введите текущий пароль для root (введите, если нет); НАЖМИТЕ ВВОД, так как вы еще не установили пароль root
Установить пароль root? [Д / Н] Д <--- скажи да !! Новый пароль: kick_me_hard Повторно введите новый пароль: kick_me_hard Пароль успешно обновлен! Перезагрузка таблиц привилегий .... . .Успех!
Теперь вы можете войти в систему с помощью phpMyAdmin или командной строки:
mysql -u root -p
Введите пароль: kick_me_hard Введите 'help;' или '\ h' для помощи бла бла бла
mysql>
Теперь ты самый крутой парень с тех пор, как починил это. Если только ты не один вокруг - ну тогда ты все равно самый крутой!
Другая возможность: возможно, существует триггер (например, удаление СОБЫТИЯ) для этой таблицы. Если вы удалите строки в этой таблице, он сработает триггер, но для выполнения триггеру требуется привилегия SUPER.
Взгляните на mysql.*
таблицы. Возможно, для этой таблицы были установлены некоторые разрешения, которые лишают вас доступа. Я знаю, что разрешения MySQL обычно не работают таким образом, но на это стоит посмотреть.
Кроме того, имеет ли сам файл таблицы правильные разрешения файловой системы? Если MySQL не может писать в него, это может запутать подсистему разрешений относительно того, что не так.