Your root account, and this statement applies to any account, may only have been added with localhost access (which is recommended).
You can check this with:
SELECT host FROM mysql.userWHEREUser='root';
If you only see results with localhost and 127.0.0.1, you cannot connect from an external source. If you see other IP addresses, but not the one you’re connecting from — that’s also an indication.
You will need to add the IP address of each system that you want to grant access to, and then grant privileges:
CREATEUSER'root'@'ip_address' IDENTIFIED BY'some_pass';GRANTALL PRIVILEGES ON*.*TO'root'@'ip_address';
If you see %, well then, there’s another problem altogether as that is «any remote source». If however you do want any/all systems to connect via root, use the % wildcard to grant access:
CREATEUSER'root'@'%' IDENTIFIED BY'some_pass';GRANTALL PRIVILEGES ON*.*TO'root'@'%';
Finally, reload the permissions, and you should be able to have remote access:
FLUSH PRIVILEGES;
Following two steps worked perfectly fine for me:
-
Comment out the bind address from the file
/etc/mysql/my.cnf:#bind-address = 127.0.0.1 -
Run following query in phpMyAdmin:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;