2010-10-08 8 views
6

Ich habe einem Benutzer die volle Kontrolle über eine Tabelle in einer Datenbank gegeben. Wie auch immer, es scheint, dass sie Aufzeichnungen nicht löschen können.GRANT DELETE ON database.table TO Benutzername @ '%';

Ich habe als privilegierter Benutzer versucht:

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

Aber stil nicht funktionieren

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

Irgendwelche Ideen nicht löschen?

Prost,

Nathan.

+0

Probieren Sie „Verwendung“ als auch zu gewähren. – Cfreak

Antwort

8

Ihre GRANT-Anweisung benötigt möglicherweise zusätzliche Anführungszeichen für den Benutzernamen: 'username'@'%'.

Sie können die Benutzerberechtigungen in der mysql Datenbank überprüfen. Überprüfen Sie die Tabellen user, db, hosts, tables_priv.

Sie könnten Einträge mit demselben Benutzernamen und verschiedenen Hostnamen haben, wie 'Benutzername' @ 'localhost' und 'Benutzername' @ '%'.

Die MySQL-Dokumentation beschreibt, in der Reihenfolge des MySQL diese Tabellen auswertet:

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

Wenn Sie einen Eintrag in der Tabelle haben tables_priv es dem Benutzer ermöglicht zu DELETE, dass sollte in der Regel ausreichend.

AFAIK Sie müssen nicht FLUSH PRIVILEGES nach einem GRANT laufen - Sie nur FLUSH müssen, wenn Sie die Berechtigungstabellen manuell mit INSERT ändern, löschen usw.

+0

Danke für die Zeiger von denen mysql Tabellen zu betrachten. Löschen funktioniert jetzt. –