Reputation: 13334
I have been following these instructions for resetting root password for local installation of MySQL 5.6
on Windows 7 laptop.
I stopped the service, created init-file, and ran the following command (as Administrator):
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" --init-file=C:\\MySQL-misc\\mysql-init.txt
I got the following warning:
2014-02-08 15:44:10 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
Since it's a warning I'm not sure whether I need to fix anything and then redo the process again.
Currently the command window is still on and does not accept any input. Should I force-close it or is there anything I can do to complete the process gracefully?
UPDATE
I killed the Command window and tried to restart the service. Got an error.
Restarted Windows and the service automatically started. The new root password
seems to work. I was successfully able to use various functions of Workbench that require the password.
So, the warning was indeed just a warning.
Upvotes: 23
Views: 100629
Reputation: 6419
I decided to answer this, because most of current answers are outdated, and they didn't worked with newer versions of MySQL/MariaDB:
my.ini
file, at: C:\Program Files\MariaDB 11.4\data
skip-grant-tables
below [mysqld]
cd C:\Program Files\MariaDB 11.4\data\bin
mysql.exe -uroot -p
## Enter with empty password ##
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.036 sec)
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'
Query OK, 0 rows affected (0.004 sec)
MariaDB [(none)]> exit;
Bye
skip-grant-tables
from your my.ini
fileUpvotes: -1
Reputation: 12499
If you are getting this error: mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
when attempting to reset your root password. You might try:
sudo service mysql stop
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -uroot
update mysql.user set authentication_string=password('your_password') where user='root';
flush privileges;
quit
sudo killall mysql
sudo service mysql start
mysql -u root -pyour_password
Tested in MySQL 5.7 running in Ubuntu 18.04
Upvotes: 0
Reputation: 81
Go to mysql bin directory on cmd i,e. cd C:\ProgramData\MySQL\MySQL Server 5.6\bin
(Its a hidden directory)
mysqld.exe --skip-grant-tables
mysql.exe -uroot -p
(without any password you can login to mysql)UPDATE mysql.user set password=password('root password') WHERE user='root';
flush privileges
Upvotes: 2
Reputation: 2943
Without editing mi.ini:
service mysql stop
mysqld_safe --skip-grant-tables
on a separate ssh session:
update mysql.user set password=PASSWORD('NEW PASSWORD') where user='root';
no need to flush privileges, just restart the server
Upvotes: -1
Reputation: 1
For MySQL 5.6 on Windows I had to run this statement to make it work.
UPDATE mysql.user
SET Password=PASSWORD('NEW PASSWORD'),
authentication_String=PASSWORD('NEW PASSWORD')
WHERE User='root';
Upvotes: -1
Reputation: 7537
On Windows:
0) shut down service mysql56
1) go to C:\ProgramData\MySQL\MySQL Server 5.6
, note that ProgramData
is a hidden folder
2) looking for file my.ini
, open it and add one line skip-grant-tables
below [mysqld]
,save
[mysqld]
skip-grant-tables
3) start service mysql56
4) by right, you can access the database, run mysql
5) and use the query below to update the password
update mysql.user set password=PASSWORD('NEW PASSWORD') where user='root';
note: for newer version, use authentication_string
instead of password
6) shut down the service again, remove the line skip-grant-tables
save it, and start the service again. try to use the password you set to login.
On Mac:
0) stop the service
sudo /usr/local/mysql/support-files/mysql.server stop
1) skip grant table
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
once it's running, don't close it, and open a new terminal window
2) go into mysql terminal
/usr/local/mysql/bin/mysql -u root
3) update the password
UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
for newer version like 5.7, use
UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
4) run FLUSH PRIVILEGES;
5) run \q
to quit
6) start the mysql server
sudo /usr/local/mysql/support-files/mysql.server start
Upvotes: 65
Reputation: 3790
Start the server manually using this line:
mysqld -P3306 --skip-grant-tables
In new cmd (Run as administrator) execute :
mysql -P3306 mysql
Execute the following query in mysql client:
update mysql.user set authentication_string=password('new_password') where user='root';
That's it!!
Upvotes: 6
Reputation: 1672
Updating this answer regarding to changes at MySQL 5.7:
0) shut down service mysql57
1) go to C:\ProgramData\MySQL\MySQL Server 5.7
, note that ProgramData
is a hidden folder
2) looking for file my.ini
, open it and add one line skip-grant-tables
below [mysqld]
,save
[mysqld]
skip-grant-tables
3) start service mysql57
4) by right, you can access the database, run mysql
5) and use the query below to update the password
update mysql.user set authentication_string=password('NEW_PASSWORD') where user='root';
6) shut down the service again, remove the line skip-grant-tables
save it, and start the service again. try to use the password you set to login.
Upvotes: 2
Reputation: 135
In case if you have Xampp installed.
skip-grant-tables
under [mysqld]
C:\xampp\mysql\bin\mysql
update mysql.user set password=PASSWORD('root') where user='root';
Upvotes: 0
Reputation: 13334
The issue has been resolved.
As stated in my question I followed instructions from MySQL manual.
The process did not go exactly as described (and this was the reason for my original post) but it worked nevertheless (see UPDATE section in my post).
Upvotes: 4