终极解决部署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密码的主要内容,如果未能解决你的问题,请参考以下文章