mysql忘记了超级用户管理密码,可以利用重新启动mysql进程的时候带 --skip-grant-tables参数来启动数据库,并空密码登录。这个就是相当于是数据库第一次启动的时候。随后可以查看mysql.user表里面的超级用户,以及修改超级用户的密码

1# 关闭MYSQL instance,或者杀死进程

2# 重新启动mysql,带--skip-grant-tables语句

[mysql@mysql01 my.cnf.d]$ mysqld_safe --defaults-file='/data/mysqldata/3306/my.cnf'  --skip-grant-tables &
[1] 32530
[mysql@mysql01 my.cnf.d]$ 180828 19:02:13 mysqld_safe Logging to '/data/mysqldata/3306/data/../mysql-error.log'.
180828 19:02:13 mysqld_safe Starting mysqld daemon with databases from /data/mysqldata/3306/data

[mysql@mysql01 my.cnf.d]$ 

3# 空密码登录MySQL

[mysql@mysql01 my.cnf.d]$ msyql -S /data/mysqldata/3306/mysql.sock 
bash: msyql: command not found...
[mysql@mysql01 my.cnf.d]$ mysql -S /data/mysqldata/3306/mysql.sock 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.31-log Source distribution

Copyright (c) 2000, 2016, 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.

(root@localhost)[(none)]> 

4# 修改mysql.user表

(root@localhost)[(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
(root@localhost)[mysql]> 
(root@localhost)[mysql]> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *A0F874BC7F54EE086FCE60A37CE7887D8B31086B |
+------+-----------+-------------------------------------------+
1 row in set (0.00 sec)

(root@localhost)[mysql]> update user set password=password('password123') where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

(root@localhost)[mysql]> 

5# 正常关闭数据库

[mysql@mysql01 my.cnf.d]$ mysqladmin -S /data/mysqldata/3306/mysql.sock -uroot -p'password123' shutdown
Warning: Using a password on the command line interface can be insecure.
180828 19:04:54 mysqld_safe mysqld from pid file /data/mysqldata/3306/mysql.pid ended
[1]+  Done                    mysqld_safe --defaults-file='/data/mysqldata/3306/my.cnf' --skip-grant-tables
[mysql@mysql01 my.cnf.d]$ 

6# 正常开启数据库

[mysql@mysql01 my.cnf.d]$ mysqld_safe --defaults-file='/data/mysqldata/3306/my.cnf'  &
[1] 33094
[mysql@mysql01 my.cnf.d]$ 180828 19:05:04 mysqld_safe Logging to '/data/mysqldata/3306/data/../mysql-error.log'.
180828 19:05:04 mysqld_safe Starting mysqld daemon with databases from /data/mysqldata/3306/data

[mysql@mysql01 my.cnf.d]$

7# 正常登录数据库

[mysql@mysql01 my.cnf.d]$ mysql -uroot -S '/data/mysqldata/3306/mysql.sock' -p'password123'
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.31-log Source distribution

Copyright (c) 2000, 2016, 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.

(root@localhost)[(none)]> 

至此mysql的root密码修改完成