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 для вашего текущего пользователя.

Перейдите в «Администрирование» — «Пользователь и привилегии» > «Выберите учетную запись пользователя» > «Перейти на вкладку «Административные роли»» > затем в разделе «Глобальные привилегии» установите флажок «УДАЛИТЬ».

Другие вопросы по тегам