How to Revoke and Re-grant Permissions for an in-use MySQL User
I hope It should work, Please have a look at following 

GRANT ALL ON *.* TO 'myuser'@'%';
Query OK, 0 rows affected (0.00 sec)

show grants for 'myuser'@'%'\G
*************************** 1. row ***************************
Grants for myuser@%: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'
1 row in set (0.00 sec)


Above shows that all privileges are granted to myuser on all databases.Now grant privileges for single db.

GRANT ALL ON mydb.* to 'myuser'@'%';
Query OK, 0 rows affected (0.00 sec)

show grants for 'myuser'@'%'\G
*************************** 1. row ***************************
Grants for myuser@%: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'
*************************** 2. row ***************************
Grants for myuser@%: GRANT ALL PRIVILEGES ON `mydb`.* TO 'myuser'@'%'
2 rows in set (0.00 sec)


Now revoke unnecessary privleges

REVOKE ALL PRIVILEGES ON *.* FROM 'myuser'@'%';
Query OK, 0 rows affected (0.00 sec)


Now check which privileges still exits

show grants for 'myuser'@'%'\G
*************************** 1. row ***************************
Grants for myuser@%: GRANT USAGE ON *.* TO 'myuser'@'%'
*************************** 2. row ***************************
Grants for myuser@%: GRANT ALL PRIVILEGES ON `mydb`.* TO 'myuser'@'%'
2 rows in set (0.00 sec)


That's what you need !!