1、先停止mysql服務
[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 # 停止 mysql 服務 Shutting down MySQL.. SUCCESS! [root@CentOS ~]#
2、使用 mysqld_safe 來啟動mysql服務
[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
在執行 ./mysqld_safe --skip-grant-tables 后終端窗口會暫停輸出。其中 --skip-grant-tables 選項表示MySql服務器不加載權限判斷,任何用戶都能訪問數據庫。
3、然后另外打開一個終端窗口,免密碼登錄mysql
[root@CentOS bin]# ./mysql -u root -p Enter password: # 此處為空密碼,直接回車即可 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、重置 root 密碼
mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root'); # 將 root 密碼修改為 'root' Query OK, 0 rows affected, 1 warning (0.00 sec) mysql>
修改密碼完成后,將使用 mysqld_safe --skip-grant-tables 命令啟動的終端窗口關閉,接下來就可以使用新設置的密碼登錄Mysql了。