???????????????????????? 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验 一位上进心十足的【大数据领域博主】!???????????? 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。 ✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】???????????? ❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录
前言???? 1.init-file找回???? 2.skip-grant-tables找回???? 3.修改参数文件找回

前言
最近有粉丝和网友常问到,如何找回MySQL管理员root的密码的方法,总结以下方法分享给大家

???? 1.init-file找回
在MySQL中,若root密码丢失则无法直接找回,只能通过特殊方式来修改密码。
步骤1:先停止MySQL服务 Kill -9 进程号
步骤2:编辑修改密码文件
alter user ‘root’@’%’ identified by ‘jeames’;
alter user ‘root’@’localhost’ identified by ‘jeames’;
步骤3:用如下方法启动MySQL
mysqld_safe –defaults-file=/etc/my.cnf –init-file=/tmp/mysql-init.sql &
步骤4:修改密码
alter user root@’localhost’ identified with mysql_native_password by ‘root’;
alter user root@’%’ identified with mysql_native_password by ‘root’;
flush privileges;
步骤4:关闭数据库后重启
123456789101112

若是 Windows 服务,则可以通过如下命令启动: D:\MySQL\mysql-8.0.15-win64\bin\mysqld –defaults-file=D:\MySQL\mysql-8.0.15-win64\data803314\mysql803314.ini –init-file=d:\mysql-init.sql –console

???????????? 注意,此时可以以任意一个密码登陆也可以以一个空密码登陆 MySQL
???? 2.skip-grant-tables找回
步骤1:先停止MySQL服务
步骤2:启动 MySQL 服务
mysqld_safe –defaults-file=/etc/my.cnf –skip-grant-tables &
注意,此时可以以任意一个密码登陆也可以以一个空密码登陆 MySQL
1234

若 MySQL 是 8.0 且安装在 Windows 上,则需要加上–shared-memory 参数: G:\mysql-8.0.23-winx64\bin\mysqld –datadir=G:\mysql-8.0.23-winx64\data80323308 –console –skip-grant-tables –shared-memory 然后再开一个窗口,执行下面命令,此种方法使用内存的方式启动 cd G:\mysql-8.0.23-winx64\bin

???? 3.修改参数文件找回
1.用命令编辑/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.cnf
2.在[mysqld]下添加skip-grant-tables,然后保存并退出
3.重启mysql服务:service mysqld restart
4.更改root用户名
重启以后,执行mysql命令进入mysql命令行
5.修改root用户密码,此处注意,有时候会报不允许修改,先flush privileges再执行即可
–5.7版本
SQL> update mysql.user set authentication_string=password(‘root’) where user=’root’;
SQL> flush privileges;
–8.0版本
mysql> alter user root@’localhost’ identified with mysql_native_password by ‘1’;
–查询
mysql> select user,host,grant_priv,super_priv,authentication_string,password_last_changed
from mysql.user;
6.把/etc/my.cnf中的skip-grant-tables注释掉,然后重启mysql,即:service mysqld restart
好了,下面就可以用root新的密码登录了!
12345678910111213141516

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览24049 人正在系统学习中

IT邦德

微信公众号

专注数据库及程序开发,擅长部署及故障处理