2010-10-08 9 views
6

Я дал пользователю полный контроль над одной таблицей в базе данных. Как бы то ни было, они не могут удалить записи.GRANT DELETE ON database.table К имени пользователя @ '%';

Я пытался как privilaged пользователь:

GRANT DELETE ON databasename.tablename TO [email protected]'%'; 
flush privileges; 

Но удалять стил не работает

ERROR 1142 (42000): DELETE command denied to user 'username'@'localhost' for table 'tablename' 

Есть идеи?

Cheers,

Nathan.

+0

Попробуйте их предоставления «USAGE», а также. – Cfreak

ответ

8

В вашем заявлении GRANT могут потребоваться дополнительные кавычки для имени пользователя: 'username'@'%'.

Вы можете проверить права пользователя в базе данных mysql. Проверьте таблицы user, db, hosts, tables_priv.

У вас могут быть записи с одинаковыми именами пользователей и разными именами хостов, например «имя пользователя» @ «localhost» и «имя пользователя» @ «%».

для MySQL Документация описывает, в каком порядке MySQL оценивает эти таблицы:

http://dev.mysql.com/doc/refman/5.1/en/request-access.html

Если у вас есть запись в таблице tables_priv, позволяя пользователю DELETE, что обычно должно быть достаточно.

AFAIK вам не нужно запускать FLUSH PRIVILEGES после GRANT - вам нужно только FLUSH при изменении таблиц привилегий вручную с помощью INSERT, DELETE и т.д.

+0

Спасибо за указатели, на которые стоит посмотреть таблицы mysql. Удалить сейчас. –

Смежные вопросы