Root is not allowed to grant privileges on a MySQL database
Solution 1:
You have all privileges for root@% but not the "grant option". In my MySQL installation, where my root account can apply grant, this is the output of "show grants" :
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*some_hash' WITH GRANT OPTION
In MySQL, giving "all privileges" does not include grant. It must be given explicitly.