MySQL 8.0、5.7、5.6、5.5忘记密码重置方法

0    234    2

Tags:

👉 本文共约2009个字,系统预计阅读时间或需8分钟。

忘记MySQL的root密码后如何登陆数据库?

在MySQL中,若密码输入错误,则会返回以下信息:

在MySQL中,若密码丢失则无法直接找回,只能通过特殊方式来修改密码。

首先,需要确认是“root@localhost”还是“root@%”密码丢失,因为这是2个不同的用户,若其中一个丢失,那么可以使用另一个用户登录,然后修改密码。

若所有用户均不能登录,那么还有2种特殊方式修改密码,下面分别进行说明。

方法一:使用“--init-file”选项

① 登录MySQL数据库所在的服务器,停止MySQL服务。对于Linux服务器,使用“ps -ef|grep mysql”来查找MySQL服务的进程号,然后手工kill掉MySQL进程。对于Windows服务器,在cmd里输入services.msc打开“服务”,使用“服务”来停止MySQL服务,或在cmd里使用“net stop mysql”停止服务。

② 创建一个文本文件mysql-init.sql,文件内容写入密码修改语句。

MySQL 5.5和5.6版本使用以下语句:

从MySQL 5.7版本开始使用:

③ 使用--init-file参数,启动MySQL实例:

若是Windows服务,则可以通过如下命令启动:

实例启动成功后,密码即修改完毕,最后再删除mysql-init.sql文件。

④ 重新以正常方式启动MySQL服务并验证新密码。

方法二:使用“--skip-grant-tables”选项

在启动MySQL数据库时使用“--skip-grant-tables”选项,表示启动MySQL服务时跳过权限表认证。通过这种方式启动后,在使用root用户连接到MySQL时将不需要密码。

在使用skip-grant-tables时需要注意以下内容:

1、对于MySQL 8.0以下版本,如果在命令行只添加了--skip-grant-tables,那么在修改完密码后,其实无需重启MySQL服务,只需要执行flush privileges即可。从MySQL 8.0开始,必须去掉--skip-grant-tables才能远程登陆数据库。

2、从安全角度出发,建议加上--skip-networking,但是因为其是静态参数,所以将其剔除掉需要重启实例。

3、加上--skip-networking,虽然可以屏蔽掉TCP连接,但对于本地其它用户,只要有Socket文件的可读权限,都能无密码登录,存在安全隐患。

具体修改密码的步骤如下所示:

① 登录MySQL数据库所在的服务器,停止MySQL服务。

② 在参数文件的[mysqld]项下添加skip-grant-tables语句,或使用--skip-grant-tables选项重启MySQL服务:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复