GRANT DELETE ON database.table TO username@'%';
Я дал пользователю полный контроль над одной таблицей в базе данных. Как бы то ни было, они не могут удалить записи.
Я пробовал как привилегированный пользователь:
GRANT DELETE ON databasename.tablename TO username@'%';
flush privileges;
Но удалить стиль не работает
ERROR 1142 (42000): DELETE command denied to user 'username'@'localhost' for table 'tablename'
Есть идеи?
Ура,
Натан.
2 ответа
Вашему заявлению GRANT могут потребоваться дополнительные кавычки для имени пользователя: 'username'@'%'
,
Вы можете проверить привилегии пользователя в mysql
база данных. Проверьте таблицы user
, db
, hosts
, tables_priv
,
У вас могут быть записи с одним и тем же именем пользователя и разными именами хоста, например, "username" @ "localhost" и "username" @ "%".
MySQL-Documentation описывает, в каком порядке MySQL оценивает эти таблицы:
http://dev.mysql.com/doc/refman/5.1/en/request-access.html
Если у вас есть запись в таблице tables_priv
позволяя пользователю DELETE
, этого обычно должно быть достаточно.
AFAIK вам не нужно бежать FLUSH PRIVILEGES
после GRANT
- вам нужно только FLUSH
если вы измените таблицы привилегий вручную с помощью INSERT,DELETE и т. д.
Вы можете попробовать это:
Возможно, ваше рабочее место mySQL не позволяет использовать функцию удаления в Global Privilege для вашего текущего пользователя.
Перейдите в «Администрирование» — «Пользователь и привилегии» > «Выберите учетную запись пользователя» > «Перейти на вкладку «Административные роли»» > затем в разделе «Глобальные привилегии» установите флажок «УДАЛИТЬ».