终极解决部署MySQL5.7后忘记root密码

Posted 闭关苦炼内功

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了终极解决部署MySQL5.7后忘记root密码相关的知识,希望对你有一定的参考价值。

前天干了个缺事,想起来挺缺的,部署一台mysql,本来很简单没啥难度,装上了,也通过初始密码进入数据库了,按照正常套路,修改初始密码,结果我修改完初始密码,忘了flush privileges; 生效了,手欠直接退了,这自己给自己找麻烦不是。

这个手误,就是自己的问题,还好不是啥大问题,不然又要挨老大训了,大哥每次都说,不要把时间浪费在这环境上,几分钟搞定的事,你搞一天,一点意义都没有。
其实大哥说得对,我得长点记性。

既然自己搞出来的问题,那就解决吧,一上来就想重装那是傻子操作,下面来看我的操作,不用重装就可搞定。

1,停掉mysql服务

systemctl stop mysql

2,修改 /etc/my.cnf 配置文件

vim /etc/my.cnf

在 [mysqld] 部分中加上下面这一句

skip-grant-tables

skip-grant-tables 的意思是去掉mysql登录验证权限,直接进入mysql数据库

3,重启mysql服务

systemctl start mysql

4,进入mysql,修改初始密码

直接 mysql 无需密码即可进入数据库

然后使用下面这条命令更改root初始密码

更改密码
update mysql.user set authentication_string=password("123456") where user="root";

更改后,修改 ‘root’@‘localhost’ 这个用户的密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

修改后千万要使用下面这条命令生效

flush privileges;

5,退出数据库,停掉mysql服务

systemctl stop mysql

6,还原修改前的 /etc/my.cnf 文件

删掉或注释掉 [mysqld] 部分中的 skip-grant-tables

#skip-grant-tables

7,重启mysql服务,创建用户并授权(远程用户)

7.1 本地用户授权

GRANT ALL PRIVILEGES ON *.* TO 'demo'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

7.2 远程用户授权

GRANT ALL PRIVILEGES ON *.* TO 'demo'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

7.3 收回远程用户

drop user 'root'@'%';
flush privileges;

看下干掉远程用户 'root'@'%'的效果:

  • 干掉前
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+------------------------------------+
| query                              |
+------------------------------------+
| User: 'root'@'%';                  |
| User: 'demo'@'localhost';     |
| User: 'mysql.session'@'localhost'; |
| User: 'mysql.sys'@'localhost';     |
| User: 'root'@'localhost';          |
+------------------------------------+
5 rows in set (0.00 sec)

mysql>
  • 开干
mysql> drop user 'root'@'%';
Query OK, 0 rows affected (0.00 sec)

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

mysql>
  • 干掉后
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+------------------------------------+
| query                              |
+------------------------------------+
| User: 'demo'@'localhost';     |
| User: 'mysql.session'@'localhost'; |
| User: 'mysql.sys'@'localhost';     |
| User: 'root'@'localhost';          |
+------------------------------------+
4 rows in set (0.00 sec)

mysql>

搞技术的一定要严谨!

以上是关于终极解决部署MySQL5.7后忘记root密码的主要内容,如果未能解决你的问题,请参考以下文章

mysql5.7忘记root密码完美解决方案

mysql5.7中root密码忘记后修改密码

MySQL5.5.38和MySQL5.7版本中忘记root密码,解决办法

Windows下Mysql5.7忘记root密码的解决方法

Windows下Mysql5.7忘记root密码的解决方法

mysql5.7忘记root密码