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?

  • 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.
| improve this answer | |

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