Learn how to change MySQL password in Linux command line (SSH)

In this tutorial, we will teach you how to set and change the root password for MySQL in Linux operating system, such as centOS, and recover it if you forget the MySQL root password.

MySQL database management service is one of the most basic parts of a server and its proper management will have a great impact on the level of performance and security.
In this tutorial, we are going to show you how to set and change the MySQL password for the root user.
To do this, we must first access the SSH environment with the operating system root user. Note that the root user of the operating system is different from the root user of the MySQL service.

How to set a password for the root user of the MySQL service #

If there is no password for the root user before, you can easily set the password with the following command:

 

mysqladmin -u root password NEWPASSWORD 

 Instead of “NEWPASSWORD”, you have to enter the password you want. But if the password for the root user of the MySQL service already exists, you must proceed with the following command:

mysqladmin -u root -p 'OLDPASSWORD' password NEWPASSWORD 

You must enter the current password instead of “OLDPASSWORD” and the new password instead of NEWPASSWORD. It should also be noted that if you want to change the password of another MySQL user, you can replace the username with root.

Note that you must have a very strong password that includes uppercase and lowercase letters, numbers and special characters such as @ #! And… Use so that it is not easy to guess.

Another way to set the root user password in the MySQL #

You can also do this in the mysql syntax environment. To enter the mysql command environment, you must enter the following command:

mysql -u root -p PASSWORD

Instead of PASSWORD you have to enter the root password. After entering the mysql command environment, you can change the password with the following command:

update user set password=PASSWORD("NEWPASSWORD") where User='root';

Instead of NEWPASSWORD you have to enter a new password. and then run:

flush privileges;
quit

How to change the MySQL root password if you forget it! #

If you have forgotten the MySQL root password, there is no need to worry and you can set a new password by following these steps:

First, stop the MySQL service with the following command:

systemctl stop mysql

Then we run the MySQL service with the following command without having to enter a password:

sudo mysqld_safe --skip-grant-tables &

Make sure you type the ampersand (&) at the end of the command. This runs the command in the background and allows you to type the commands in the following steps. Running MySQL with the —skip-grant-tables option enabled is highly insecure, and should only be done for a brief period while you reset the password. The steps below show you how to stop the mysqld_safe server instance safely and start the MySQL server securely after you have reset the root password.

Fix Error & reset root password when ” /var/run/mysqld’ for UNIX socket file don’t exists” #

maybe like me when you useing the code mysqld_safe –skip-grant-tables & face the  following error:

 mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

for fix above issue , run below command :

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

then try again :

sudo mysqld_safe --skip-grant-tables &

Now we can log in to mysql with the following command with the root user:

mysql -u root

Set a new root password #

Run the following commands if you run MySQL 5.7.6 and later or MariaDB 10.1.20 and later:

mysql > ALTER USER 'root'@'localhost' IDENTIFIED BY 'MY_NEW_PASSWORD';
mysql > FLUSH PRIVILEGES;

If  ALTER USER statement doesn’t work for you, try to modify the user table directly:

mysql > UPDATE mysql.user SET authentication_string = PASSWORD('MY_NEW_PASSWORD')
mysql > WHERE User = 'root' AND Host = 'localhost';
mysql > FLUSH PRIVILEGES;

Run the following commands if you have MySQL 5.7.5 and earlier or MariaDB 10.1.20 and earlier:

mysql > SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_NEW_PASSWORD');
mysql > FLUSH PRIVILEGES;

In both cases if all goes well, you should see the following output:

 Query OK, 0 rows affected (0.00 sec) 

How Reset Mysql 8.x Password #

Reset MySQL 8 root password completely different. run below command :

sudo service mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
mysql > UPDATE mysql.user SET authentication_string=null WHERE User='root';
mysql > flush privileges;
mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password_here';
mysql > flush privileges;
mysql > exit;

After doing the work and setting the new password, we can restart the MySQL service with the following command:

sudo systemctl restart mysql

Powered by BetterDocs

Leave a Reply