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

41 篇文章 0 订阅

前天干了个缺事,想起来挺缺的,部署一台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>

搞技术的一定要严谨!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值