Failed to connect to mysql at 127.0.0.1:3306 with user root access denied for user 'root'@'localhost'(using password:YES)
First check if it's a workbench or connection problem.
1) In your windows run 'cmd' to open a terminal
Try both
2a) mysql -u root -p -h 127.0.0.1 -P 3306
2b) mysql -u root -p -h > localhost -P 3306
3) If the connection is good you will get a password prompt, see if you can connect with correct password.
If your connection is denied, just grant the permission
mysql >GRANT ALL ON [DatabaseName].* TO 'root'@'127.0.0.1' IDENTIFIED BY '[PASSWORD]';
If your connection is accepted here, it's like a workbench configuration problem.
I had the same problem.
I've installed fresh mysql at Ubuntu but I left mysql password empty, and as a result I couldn't connect to mysql in any way.
Lately I've revealed that there is a table of users where are names, hosts, passwords and some plugins. So for my user root@localhost mysql while installing assigned a plugin called auth_socket, which let Unix user "root" log in as a mysql user "root" without password, but don't allow login as another Unix user. So to fix that you should turn off this plugin and set usual authentication:
- open Linux terminal
- enter "sudo mysql"
you will see "mysql >" which means you've connected to mysql as a 'root' Unix user and you can type SQL queries. - enter SQL query to change a way how you will log in:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
where 'mysql_native_password' means - to turn off auth_socket plugin.
Try this, it worked for me!
sudo mysql -u root -p
Inside the terminal enter:
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Then in the MySQL Workbench edit the connection and change the root name to admin.