MySQL is a free, open-source, and widely used database management system. It is very popular for web application software. MySQL has a root password that allows a user to perform all database-related tasks.

If you are a system administrator responsible for managing a MySQL server, then you may often need to set or reset the MySQL root password – for example, if you forgot the MySQL root password or want to change the password for security reasons.

In this tutorial, we will show how to set, change, or reset the MySQL root password in Ubuntu 18.04.

Step 1 – Set the MySQL Password for the First Time

When you install the MySQL server for the first time, a MySQL root password is not set. You can connect to the MySQL shell without providing a password, but this is not recommended for security reasons.

To set the MySQL root password, connect to the MySQL shell with the following command:

mysql

Once connected, change the database to mysql using the following command:

use mysql;

Next, set the MySQL root password with the following command:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secure-
password';

Next, flush the privileges and exit from the MySQL shell with the following command:

FLUSH PRIVILEGES;
EXIT;

Next, verify the MySQL by logging in with the root user:

mysql -u root -p

You will be prompted to enter the newly configured password to connect to the MySQL shell.

Step 2 – Change the MySQL Root Password

The easiest way to change the MySQL root password is with mysql_secure_installation script.

mysql_secure_installation

You will be asked to provide your current MySQL root password as shown below:

Securing the MySQL server deployment.
Enter password for user root:

Provide your MySQL root password and hit Enter. You should see the following output:

Select “No”

You will then be prompted to change the root password. Select YES.

 

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y

Type Y and hit Enter to proceed. You will be asked to provide new password as shown below:

New password:
Re-enter new password:

Provide your new password, hit Enter, and complete the remaining steps as shown below:

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

You can also change the MySQL root password with the following command:

mysqladmin -u root -p password your-new-password

You will be asked to provide your current root password to change the password.

Step 3 – Recover Forgotten MySQL Root Password

If you forgot the MySQL root password, then you will need to recover it.

To recover the MySQL root password, first stop the MySQL service using the following command:

systemctl stop mysql

Next, create a mysqld directory and give proper permissions with the following command:

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

Next, start the MySQL service with the –skip-grant-tables:

mysqld_safe --skip-grant-tables &

This will allow you to connect the MySQL server without a password.

Next, log in to MySQL with the root user as shown below:

mysql -u root

After login, change the database to mysql as shown below:

use mysql;

Next, reset your root password with the following command:

UPDATE mysql.user SET authentication_string = PASSWORD('new-password') WHERE User = 
'root' AND Host = 'localhost';

Next, reload the privileges and exit from the MySQL shell with the following command:

FLUSH PRIVILEGES;
EXIT;

Next, stop the MySQL service with the following command:

mysqladmin -u root -p shutdown

You will be asked to provide your new password to stop the MySQL service.

Next, start the MySQL service again with the following command:

systemctl start mysql

Next, log in to MySQL with your new password as shown below:

mysql -u root -pnew-password

Once logged in, you should see the following output:

Conclusion

In the above guide, you learned how to set, update, and recover the MySQL root password on an Ubuntu 18.04 server. This guide should work with Ubuntu 18.04, Debian 10 and CentOS 8. If you are ready to try resetting your MySQL password, get started on dedicated server hosting from Atlantic.Net.