my root account has been deleted for unknown reason, how to recover?
You were supposed to do this:

grant all privileges on *.* to 'john91'@'localhost' with grant option;


You forgot to give 'john91'@'localhost' grant option. Thus, you cannot grant privileges to anyone else.

You can fix that by doing the following

update mysql.user set grant_priv='Y' where user='john91' and host='localhost';
flush privileges;


Then, you should be able to run

grant all privileges on *.* to 'root'@'127.0.0.1';


Give it a Try !!!