Centos7 forgot the root password of mysql

Keywords: PHP MySQL CentOS Oracle Database

1. Stop mysql service first

​[root@CentOS ~]# ps -ef | grep mysql
root       5365      1  0 15:47 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/CentOS.pid
mysql      5452   5365  4 15:47 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=CentOS.err --pid-file=/usr/local/mysql/data/CentOS.pid
root       5485   5210  0 15:47 pts/0    00:00:00 grep --color=auto mysql
[root@CentOS ~]# service mysql stop    # Stop mysql service
Shutting down MySQL.. SUCCESS! 
[root@CentOS ~]# 

2. Use mysqld_safe to start mysql service

​[root@CentOS ~]# cd /usr/local/mysql/bin/
[root@CentOS bin]# ./mysqld_safe --skip-grant-tables
2018-03-02T07:49:52.491532Z mysqld_safe Logging to '/usr/local/mysql/data/CentOS.err'.
2018-03-02T07:49:52.528458Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

After executing. / mysqld_safe -- skip grant tables, the terminal window will pause the output. The -- skip grant tables option means that MySql server does not load permission judgment, and any user can access the database.

3. Open another terminal window and log in to mysql without password.

​[root@CentOS bin]# ./mysql -u root -p
Enter password:                     # This is a blank password, just enter directly
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

4. Reset root password

​mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');    # take root Change password to 'root'
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> 

After modifying the password, close the terminal window started by mysqld_safe -- skip grant tables command, and then log in to Mysql with the new password.

Posted by designationlocutus on Mon, 21 Oct 2019 08:56:31 -0700