Access denied for user root - mysql on MAC OS
You can do the following on Mac (El Capitan)
- Open a Terminal window, use the command below to stop mysql if it's already running.
sudo /usr/local/mysql/support-files/mysql.server stop
You can also check System Preferences > MySQL to see if it is running
Start MySQL with this command:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
Open a new terminal window/tab:
sudo /usr/local/mysql/bin/mysql -u root
This should open "mysql" prompt. Execute the following command:
$mysql> UPDATE user SET authentication_string=PASSWORD("my_password") WHERE User='root';
Troubleshooting tips:
A) The command for MySql versions before 5.7 was:
$mysql> UPDATE user SET Password=PASSWORD('my_password') where USER='root';
B) If you see
ERROR 1046 (3D000): No database selected
, then run this command first:use mysql;
C) If you see unknown "Password" field error, then run this command:
UPDATE USER SET AUTHENTICATION_STRING=password('NewPassword') WHERE user='root'; $mysql> FLUSH PRIVILEGES; $mysql> EXIT
D) If you see - ERROR 1064 (42000): You have an error in your SQL syntax; It is because password function was removed in version 8.0.11. Use bare string:
UPDATE USER SET AUTHENTICATION_STRING='NewPassword' WHERE user='root';
Stop MySql server
sudo /usr/local/mysql/support-files/mysql.server stop
Restart MySQL, either through System Preferences > MySql or using a command.
The solution of
UPDATE user SET authentication_string=PASSWORD("my_password") WHERE User='root';
wasn’t working for me, but I did
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';
And was able to proceed. I’m using Ver 8.0.12.