Reset of MySQL password can be done in several ways depending of the:
- OS
- are you connected
- user rights
In this post:
- MySQL 8 set new root password
- MySQL problems related to root authentication
- Not able to connect with root and no password
- 1699 SET PASSWORD has no significance for user ‘root’@’localhost’ as authentication plugin does not support it.
- 1287 ‘SET PASSWORD FOR = PASSWORD(”)’ is deprecated and will be removed in a future release. Please use SET PASSWORD FOR = ” instead
- MySQL remove root password
- MySQL set new root password
- Windows Resetting the Root Password
- Ubuntu Resetting the Root Password
- Reset the user by query
- Reset password from MySQL Workbench
MySQL 8 set new root password
If you can log in to your MySQL server and you wanto to change your password by query you can do it by:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
or removing the root password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
MySQL problems related to root authentication
Not able to connect with root and no password
If you remove your root password or set it to null then you may experience problems when you try to connect with root. It’s advisable to create another DBA user while playing with these settings.
One of the reasons to not be able to connect would be: auth_socket plugin. This is a new change since 5.7:
If we want to configure a password, we need to change the plugin and set the password at the same time, in the same command. First changing the plugin and then setting the password won’t work, and it will fall back to auth_socket again. So, run:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
For more information you can check the link in references
1699 SET PASSWORD has no significance for user ‘root’@’localhost’ as authentication plugin does not support it.
In case that you are trying to change your root password(or other user password without success you can check previous section.
1287 ‘SET PASSWORD FOR = PASSWORD(”)’ is deprecated and will be removed in a future release. Please use SET PASSWORD FOR = ” instead
If you see this warning your can solve it just by removing:
SET PASSWORD FOR root@localhost=PASSWORD('1234');
SET PASSWORD FOR root@localhost='';
It seems that most DB tools are not updated with last changes and still produce old format queries
MySQL remove root password
If you want to remove the password from your root account in MySQL you can:
- login in MySQL or by using a tool
mysql -u root -p
and run this command:
SET PASSWORD FOR root@localhost=PASSWORD('');
MySQL set new root password
As the previous section if you want to change your root password you can do it by running:
after MySQL 5.7.6:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPass';
prior MySQL 5.7.5:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newPass');
This way you will reset only the root password. If your forgot your root password than you can check next section.
Windows Resetting the Root Password
For this solution you will need administrative rights:
- Stop the MySQL server(service)
- Create new text file – C:\mysqlResetRoot.txt
- Add this line(for earlier version use – see prevoius section):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPass';
Open Command Prompt
- start menu, type cmd and enter
- WINDOWS+R and type cmd
Go to your MySQL installation folder:
cd "C:\Program Files\MySQL\MySQL Server 5.7\bin
- Start MySQL with this command:
mysqld --init-file=C:\\mysqlResetRoot.txt
Ubuntu Resetting the Root Password
For Ubuntu and Linux Mint you can do these steps:
- Open terminal
- Login with the user running the MySQL service
- Stop the MySQL server by
sudo systemctl stop mysql
for older versions of Ubuntu you can use:
sudo /etc/init.d/mysql stop
or
service mysqld stop
- Create new text file – /home/user/mysqlResetRoot.txt
- Add this line(for earlier version use – see prevoius section):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPass';
- Start MySQL with this command:
mysqld --init-file=/home/me/mysqlResetRoot.txt &
Reset the user by query
Another option to reset the password of your root account is by update statement. This is a simple update – set which will set new password:.
UPDATE mysql.user
SET authentication_string = PASSWORD('newPass'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
Finally reload the table grants by:
FLUSH PRIVILEGES;
Reset password from MySQL Workbench
- Open MySQL Workbench
- Connect to your database
- Sidebar
- Management
- User and Privileges
- Select the user – root
- Type a new password to reset it
- Apply