This question already has an answer here:

Alright, root@localhost was not connectable with PHP, so I deleted it and created a new root account.

All was fine until I was about to grant privileges when I realized, that none of the other accounts had grant privileges.

How to get access back to root privileges on the DB?

marked as duplicate by mustaccio, Colin 't Hart, hot2use, Philᵀᴹ, Max Vernon May 25 '18 at 15:58

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • please help, And yes I have tried --init-file – Pugs United May 24 '18 at 22:59

See for example this answer: https://superuser.com/a/603027

Start the MySQL server instance or daemon with the --skip-grant-tables option (security setting).

$ mysqld --skip-grant-tables

Execute these statements.

$ mysql -u root mysql
$mysql> UPDATE user SET Password=PASSWORD('my_password') where USER='root';

So just do the necessary GRANT statements in the second part. Like explained here: https://stackoverflow.com/a/1709138/6368697

If the GRANT ALL doesn't work, try:

Stop mysqld and restart it with the --skip-grant-tables option.
Connect to the mysqld server with just: mysql (i.e. no -p option, and username may not be required).

Issue the following commands in the mysql client:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';


After that, you should be able to run GRANT ALL ON *.* TO 'root'@'localhost'; and have it work.

Not the answer you're looking for? Browse other questions tagged or ask your own question.