前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 5.7及8.0版本数据库的root密码遗忘的解决办法

MySQL 5.7及8.0版本数据库的root密码遗忘的解决办法

作者头像
小手冰凉
发布2020-05-19 21:40:17
1.1K0
发布2020-05-19 21:40:17
举报
文章被收录于专栏:小手冰凉小手冰凉

注:MySQL5.7破解root密码,跳过密码认证登录到数据库,直接修改表中的密码即可,但是MySQL 8.0则不可以这样修改root密码,需要跳过密码认证登录到数据库后,先将root密码设置为空,然后才可以登录到数据库,修改root密码。

1、忘记MySQL 5.7数据库的root密码解决办法 方法1(推荐):

代码语言:shell
复制
[root@mysql ~]# systemctl stop mysqld           # 停mysql服务
[root@mysql ~]# mysqld --user=root --skip-grant-tables               # 使用mysqld指令启动mysql服务,跳过授权表
#上述命令执行后,会一直占用当前终端,需要再开启一个终端,
#也不要想着放到后台运行了,放到后台3306端口不会监听的
[root@mysql ~]# netstat -anput | grep 3306           # 在开启一个终端,可以看到3306在监听
tcp6       0      0 :::3306                 :::*                    LISTEN      3714/mysqld   
[root@mysql ~]# mysql -uroot          # 直接登录数据库,无需密码
mysql> update mysql.user set authentication_string=password('1234')              #   #更改root密码为“1234”
    -> where user='root' and host='localhost';
mysql> flush privileges;           # 刷新权限
[root@mysql ~]# kill 3714             #将之前mysqld启动时占用的终端进程号kill掉,切忌不要使用-9选项
 [root@mysql ~]# systemctl start mysqld
#启动MySQL服务,使用新密码登录即可

如果上面的过程中,使用kill -9来结束mysqld占用的终端,那么再次启动可能会报错,sock文件被锁定,此时,需要将你mysql的sock文件删除掉,我这里的sock文件在/tmp下,分别时mysql.sock.lock和mysql.sock这两个文件,删除后再次启动MySQL即可。 方法2:

代码语言:shell
复制
[root@mysql ~]# mysql --version              # 确定MySQL版本
mysql  Ver 14.14 Distrib 5.7.22, for linux-glibc2.12 (x86_64) using  EditLine wrapper
[root@mysql ~]# vim /etc/my.cnf 
[mysqld]           # 在此行下面写入如下内容
skip-grant-tables
[root@mysql ~]# systemctl restart mysqld            # 重启服务使配置生效
[root@mysql ~]# mysql -u root             # 跳过密码验证,直接登入数据库
#修改root密码为pwd@123,并刷新权限
mysql> use mysql
mysql> update user set authentication_string = password('pwd@123') where user = 'root';
mysql> flush privileges;
#配置密码验证,使用新密码登录
[root@mysql1 ~]# vim /etc/my.cnf         #编辑主配置文件
[mysqld] 
skip-grant-tables            #删除此行
[root@mysql1 ~]# systemctl restart mysqld          #重启使更改生效
#使用新密码即可成功登录
[root@mysql1 ~]# mysql -uroot -ppwd@123       

2、遗忘MySQL 8.0数据库的root密码解决办法

代码语言:shell
复制
[root@mysql1 ~]# mysql --version        #查看MySQL版本
mysql  Ver 8.0.18 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
[root@mysql1 ~]# vim /etc/my.cnf         #编辑主配置文件
[mysqld]      #在mysqld这行下写入下面内容
skip-grant-tables
            .................#省略部分内容
[root@mysql1 ~]# systemctl restart mysqld      #重启MySQL服务,使配置文件生效
[root@mysql1 ~]# mysql -uroot           #跳过密码验证,直接登录数据库
#将root密码设置为空
mysql> use mysql
mysql> update user set authentication_string='' where user = 'root';
mysql> flush privileges;
mysql> exit
#开启密码验证并重新登录数据库
[root@mysql1 ~]# vim /etc/my.cnf         #编辑主配置文件
[mysqld] 
skip-grant-tables            #删除此行
[root@mysql1 ~]# systemctl restart mysqld          #重启使更改生效
[root@mysql1 ~]# mysql -uroot            #直接登录数据库
mysql> alter user root@localhost identified by 'pwd@111';
mysql> flush privileges;
mysql> exit
#使用新密码进行登录测试
[root@mysql1 ~]# mysql -uroot -ppwd@111
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档