MySQL root password change

MysqlRootMysqladmin

Mysql Problem Overview


I have been trying to reset my MySQL root password. I have run mysqld_safe --skip-grant-tables, updated the root password, and checked the user table to make sure it is there.

Once restarting the MySQL daemon I tried logging in with the new root password that I just set and still get Access denied for user 'root' errors. I have also tried completely removing and reinstalling MySQL (including removing the my.cnf file) and still no luck. What can I do next?

Mysql Solutions


Solution 1 - Mysql

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');
FLUSH PRIVILEGES;

Solution 2 - Mysql

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

You can find Resetting the Root Password in the MySQL documentation.

Solution 3 - Mysql

Have a look at this from the MySQL reference manual:

First log in to MySQL:

mysql -u root -p

Then at the mysql prompt, run:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';

Then

FLUSH PRIVILEGES;

Look at this page for more information: Resetting the Root Password: Unix Systems

UPDATE:

For some versions of mysql, the password column is no longer available and you'll get this error:

ERROR 1054 (42S22): Unknown column 'Password' in 'field list'

In this case, use ALTER USER as shown in the answer below.

Solution 4 - Mysql

Please follow the below steps.

  1. sudo service mysql stop
  2. sudo mysqld_safe --skip-grant-tables
  3. sudo service mysql start
  4. sudo mysql -u root
  5. use mysql;
  6. show tables;
  7. describe user;
  8. update user set authentication_string=password('1111') where user='root';
  9. FLUSH PRIVILEGES;

Log in with password "1111".

Solution 5 - Mysql

This is the updated answer for WAMP v3.0.6 and up.

In the MySQL command-line client, phpMyAdmin or any MySQL GUI:

UPDATE mysql.user
SET authentication_string=PASSWORD('MyNewPass')
WHERE user='root';

FLUSH PRIVILEGES;

In MySQL version 5.7.x there is no more password field in the MySQL table. It was replaced with authentication_string. (This is for the terminal/CLI.)

In the MySQL command-line client, phpMyAdmin or any MySQL GUI:

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

Solution 6 - Mysql

I searched around as well and probably some answers do fit for some situations,

my situation is Mysql 5.7 on a Ubuntu 18.04.2 LTS system:

(get root privileges)

$ sudo bash

(set up password for root db user + implement security in steps)

# mysql_secure_installation

(give access to the root user via password in stead of socket)

(+ edit: apparently you need to set the password again?)

(don't set it to 'mySecretPassword'!!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Many thanks to zetacu (and erich) for this excellent answer (after searching a couple of hours...)

Enjoy :-D

S.

Edit (2020):

This method doesn't work anymore, see this question for future reference...

Solution 7 - Mysql

I found it! I forgot to hash the password when I changed it. I used this query to solve my problem:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

I forgot the PASSWORD('NEW PASSWORD') and just put in the new password in plain text.

Solution 8 - Mysql

On MySQL 8.0.4+

To update the current root user:

select current_user();
set password = 'new_password';

To update another user:

set password for 'otherUser'@'localhost' = 'new_password';

To set the password policy before updating the password:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Another / better way to update the root password:

mysql_secure_installation

Do you want to stick with 5.x authentication, so you can still use legacy applications?

In my.cnf file

default_authentication_plugin = mysql_native_password

To update root:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

Solution 9 - Mysql

On MySQL 8 you need to specify the password hashing method:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new-password';

Solution 10 - Mysql

This worked for me -

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Chapter 4 Resetting the Root Password: Windows Systems

Solution 11 - Mysql

For MySQL 5.7.6 and later:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

For MySQL 5.7.5 and earlier:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Solution 12 - Mysql

For me, only these steps could help me setting the root password on version 8.0.19:

mysql
SELECT user,authentication_string FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
FLUSH PRIVILEGES;
SELECT user,authentication_string FROM mysql.user;

If you can see changes for the root user, then it works. Source: Can't set root password MySQL Server

Solution 13 - Mysql

You have to reset the password! Steps for Mac OS X (tested and working) and Ubuntu:

Stop MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

Start it in safe mode:

sudo mysqld_safe --skip-grant-tables

(The above line is the whole command.)

This will be an ongoing command until the process is finished, so open another shell/terminal window and log in without a password:

mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Start MySQL

sudo /usr/local/mysql/support-files/mysql.server start

Your new password is 'password'.

Solution 14 - Mysql

For the current latest MySQL version (8.0.16), none of these answers worked for me.

After looking at several different answers and combining them together, this is what I ended up using that worked:

update user set authentication_string='test' where user='root';

Solution 15 - Mysql

Using the mysqladmin command-line utility to alter the MySQL password:

mysqladmin --user=root --password=oldpassword password "newpassword"

Source

Solution 16 - Mysql

I tried the answer from kta, but it didn't work for me.

I am using MySQL 8.0.

This worked for me in the MySQL command-line client (executable mysql):

SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'

Solution 17 - Mysql


This is for Mac users.


On 8.0.15 (maybe already before that version) the PASSWORD() function does not work. You have to do:

Make sure you have Stopped MySQL first (above). Run the server in safe mode with privilege bypass:

sudo mysqld_safe --skip-grant-tables

Replace this mysqld_safe with your MySQL path like in my case it was

sudo /usr/local/mysql/bin/mysqld_safe –skip-grant-tables

then you have to perform the following steps.

mysql -u root

UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

Then

mysql -u root

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Solution 18 - Mysql

In MySQL 5.7, the password is replaced with 'authentication_string'. Use

update user set authentication_string=password('myfavpassword') where user='root';

Solution 19 - Mysql

So many comments, but I was helped by this method:

sudo mysqladmin -u root password 'my password'

In my case after installation I had got the MySQL service without a password for the root user, and I needed to set the password for my security.

Solution 20 - Mysql

A common error I run into from time to time, is that I forget the -p option, so be sure to use:

mysql -u root -p

Solution 21 - Mysql

Now just use:

SET PASSWORD FOR <user> = '<plaintext_password>'

Because 'SET PASSWORD FOR <user> = PASSWORD('<plaintext_password>')' is deprecated and will be removed in a future release.(Warning in 04/12 2021) Please use SET PASSWORD FOR <user> = '<plaintext_password>' instead.

Update 04/12 2021 AM 2:22:07 UTC/GMT -5 hours.

Use the following statement to modify directly in the mysql command line:

mysql> SET PASSWORD FOR'root'@'localhost' = PASSWORD('newpass');

or 1.The terminal enters the bin directory of MySQL

cd /usr/local/mysql/bin

2.Open MySQL

mysql -u root -p

3.At this time you can use your default password

4.Perform operations in MySQL at this time

show databases;

5.You will be prompted to reset the root user password.

So how to reset the root password? I checked a lot of information but it didn’t take effect.

Including entering to modify the database in safe mode, using the mysqladmin command: "Mysqladmin -u root password"your-new-password"" etc., Will not work.

The correct steps are as follows:

1.It is still in the cd /usr/local/mysql/bin/ directory

2.sudo su

After entering, you will be asked to enter your computer password.

When you enter it, nothing is displayed. After you enter it, press Enter

Then press enter

3.Cross the authorization verification

sh-3.2# ./mysqld_safe --skip-grant-tables &

If the execution of the command is stopped, and the execution has been completed at this time,

press Enter directly, and then exit to exit:

sh-3.2# exit

4.Re-enter MySQL at this time, no -p parameter, no password

./mysql -u root

5.Select the database MySQL (here MySQL refers to a database in MySQL,

there are other databases in MySQL, you can view it through show databases;)

use mysql;

6.Update the password of the root user in the database table:

update user set authentication_string=123456where User='root';

Note: The password field here is authentication_string,

not the password circulated on the Internet.

It is estimated that MySQL was updated later.

Re-enter MySQL and use the password you just set, is it all right?

Because you have just set to bypass the authorization authentication,

you can log in to MySQL directly without a password.

My stupid way is to restart the computer and log in to MySQL with the password again to see if the modification is effective;

Solution 22 - Mysql

Update from 2022

I've tried a few of the answer but the one that works for me is the following

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Courtesy of StrongDM

Note: I'm using the MySql client for Windows 10 and I'm also logging as the root user.

Solution 23 - Mysql

Exit from WAMP and Stop all WAMP services.

Open Notepad and then type:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');

Then save it to the C: drive with any name... like this "c:/example.txt"

Now go to your "wamp" folder: wampbinmysqlmysql (your version) → bin

In my case the path is "C:\wamp\bin\mysql\mysql5.6.17\bin".

Now copy your path, run CMD with (Ctrl + R), and then type "cmd" (Enter).

Type cd, right click on CMD, and paste the path (Enter).

Now type (mysqld --init-file=C:\\example.txt) without braces and (Enter).

Then restart the PC or open Task Manager and kill mysqld.exe.

Start WAMP and your password will be removed...

Solution 24 - Mysql

For macOS users, if you forget your root password, thusharaK's answer is good, but there are a few more tricks:

If you are using a system preference to start MySQL serverside, simply

sudo mysqld_safe --skip-grant-tables

might not work for you.

You have to make sure the command-line arguments are the same with the system start configuration.

The following command works for me:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

You can use

ps aux | grep mysql

to check your own.

Solution 25 - Mysql

Or just use interactive configuration:

sudo mysql_secure_installation

Solution 26 - Mysql

On Ubuntu,

sudo dpkg-reconfigure mysql-server-5.5

Replace 5.5 with your current version and you will be asked for the new root password.

Solution 27 - Mysql

  1. On Mac open system preferences   MySQL.

  2. In the configuration section of MySQL, check for "Initialize Database".

  3. Change the password in the prompt.

    Initialize database

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnickView Question on Stackoverflow
Solution 1 - MysqlktaView Answer on Stackoverflow
Solution 2 - MysqliamfaithView Answer on Stackoverflow
Solution 3 - MysqlVSBView Answer on Stackoverflow
Solution 4 - MysqlLokesh GView Answer on Stackoverflow
Solution 5 - MysqlRobert Anthony S. TribianaView Answer on Stackoverflow
Solution 6 - MysqlMadBoomyView Answer on Stackoverflow
Solution 7 - MysqlnickView Answer on Stackoverflow
Solution 8 - MysqlCarlitoView Answer on Stackoverflow
Solution 9 - MysqlHokaschaView Answer on Stackoverflow
Solution 10 - MysqlEdGziView Answer on Stackoverflow
Solution 11 - MysqlEagle_EyeView Answer on Stackoverflow
Solution 12 - MysqlSergio ZaharchenkoView Answer on Stackoverflow
Solution 13 - Mysqltk_View Answer on Stackoverflow
Solution 14 - MysqlSuhasView Answer on Stackoverflow
Solution 15 - MysqlDarushView Answer on Stackoverflow
Solution 16 - MysqlchainstairView Answer on Stackoverflow
Solution 17 - MysqlSupreet SinghView Answer on Stackoverflow
Solution 18 - MysqlKamal ReddyView Answer on Stackoverflow
Solution 19 - MysqlKonstantin RomanovskyView Answer on Stackoverflow
Solution 20 - MysqlMarian TheisenView Answer on Stackoverflow
Solution 21 - MysqlVittore MarcasView Answer on Stackoverflow
Solution 22 - MysqlAndy KView Answer on Stackoverflow
Solution 23 - MysqlMohitGhodasaraView Answer on Stackoverflow
Solution 24 - MysqlShaofei ChengView Answer on Stackoverflow
Solution 25 - MysqlshilovkView Answer on Stackoverflow
Solution 26 - MysqlMouneerView Answer on Stackoverflow
Solution 27 - MysqlN N K TejaView Answer on Stackoverflow