There Is No Such Grant Error

August 7, 2016 3.9k views
MySQL

I followed the instructions here to create a new user.

https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql

The only difference was that when giving the user original privileges I gave it to only one database.

Now I'm trying to remove the users access to a single table in that database with the following:

REVOKE ALL PRIVILEGES ON [database name].[table name] FROM ‘[username]’@‘localhost’;

But I keep getting the following error.

ERROR 1147 (42000): There is no such grant defined for user 'username' on host 'localhost' on table 'table_name'

2 Answers
ryanpq MOD August 9, 2016
Accepted Answer

What result is displayed if you run:

SHOW GRANTS FOR '[username]'@'localhost';

To remove permission grants you will need to be specific and reference grants explicitly listed.

  • Hi ryanpq,

    Please help!...

    I am facing a similar problem..i had access to database through MySQL workbench but one of my coworkers accidentally went on to users and privileges and revoke them...he thought he was deleting another user.

    Now I can't access my information schema on mysql workbench and all my privileges are gone....i am logging through root...also my website is down becaause there are no other users...i am able to login to mysql via mysql -h 127.0.0.1 -u root but i can't seem to add or get my privileges back......

    mysql> show grants for 'root';
    ERROR 1141 (42000): There is no such grant defined for user 'root' on host '%'
    mysql> SHOW GRANTS FOR 'root'@'localhost';
    +--------------------------------------------------------------+
    | Grants for root@localhost |
    +--------------------------------------------------------------+
    | GRANT USAGE ON . TO 'root'@'localhost' |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
    +--------------------------------------------------------------+
    2 rows in set (0.00 sec)

    .......................................................................................................

    Please help

Thanks for your reply ryanpq, you are correct. Because I applied the All Privileges permissions at the database.* level, I couldn't only revoke privileges at the database.* level as the All Privileges was not simply carried down to the individual tables.

Once I wiped privileges at the database level all together, I was then able to grant and revoke them on a table basis.

Have another answer? Share your knowledge.