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.