MySQL5.7忘记密码(修改配置文件方式跳过授权)

本文详细介绍了如何在Windows环境下修改MySQL root账号的密码,包括找到my.ini配置文件,设置skip-grant-tables,重启MySQL服务,通过命令行登录并更新密码,以及刷新权限。过程中可能遇到的服务名无效、无法使用特定命令等问题也进行了分析和解决,特别指出应使用authentication_string字段而非Password字段来更新密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上查看了很多资料来修改mysql的root账号密码,但是修改的时候总跟网上的教程里的不一样,不知道是不是因为版本原因。因此将解决办法和不同点都发上来,仅供参考,共同学习。

1. 找到my.ini文件,配置跳过权限表

my.ini文件,一般在隐藏文件夹ProgramData目录下的mysql里
在这里插入图片描述

2. 在【mysqld】下配置skip-grant-tables

在这里插入图片描述

3. 重启mysql服务

这个方法就多了。可以使用mysql 自带的 MySQL Notifier。或者去windows的服务里面重启。或者在cmd命令行里重启。

方法一:右下角的MySQL Notifier

在这里插入图片描述

点击restart即可。
注:如果右下角没有,可以在开始菜单里找一下,开始菜单里没有就是mysql安装的时候没安装了,可以在打开安装程序,安装即可。

方法二:

win+r 运行services.msc

在这里插入图片描述

然后找到mysql服务,进行重启

在这里插入图片描述

方法三:

cmd命令行内,输入net stop mysql57停止mysql服务,start启动服务。 在这里插入图片描述
如截图一样即停止、启动成功。如果提示 服务名无效,本文结尾处有解决方案。

4. 打开cmd,登录mysql

进入到mysql的bin目录,输入mysql,即可跳过密码验证登录到mysql,并且所有数据库都可以查看的到。

在这里插入图片描述

5. 修改密码

# 修改root账号密码
update mysql.user set authentication_string = password('123456') where user='root';

也可以先use mysql,然后

update user set authentication_string = password(‘123456’) where user=‘root’;

6. 刷新权限

flush privileges;

7. 将配置文件的skip-grant-tables删除,并重启mysql服务



接下来,记录一下遇到过的问题。

1、net stop mysql

在这里插入图片描述

输入提示 服务名无效。

原因: 服务名与本机的服务名不一致,这个是在mysql安装的时候配置的。mysql5.7默认服务名为mysql57 。这个可以在windows的服务列表里查看。

只要输入的与服务列表里的一致,就可以正常关闭了。
在这里插入图片描述

2、不是在配置文件中跳过的权限表,而是使用的命令。

输入mysqld --skip-grant-tables 回车。

(–skip-grant-tables 的意思是启动 MySQL 服务的时候跳过权限表认证)

注意:这时候,刚刚打开的 cmd 窗口已经不能使用了。重新再 bin 目录下打开一个新的 cmd 窗口进行下面的操作。

此时,新打开的cmd窗口,查询的数据库只有一个,没有mysql库。

在这里插入图片描述

原因: 猜测是没有读取到mysql的data文件夹。因为在mysql的配置文件中有配置datadir,但是无权限进入后没有配置data目录 。因此无法读取到其他数据库。因此采用修改配置文件my.ini的方式即可。

3. 修改时提示Unknown column ‘Password’

update user set password=password("123456") where user="root";
mysql> update user set Password=password('123456') where user='root';

ERROR 1054 (42S22): Unknown column 'Password' in 'field list'

这里要更改的是 authentication_string, 而不是 password 字段。否则就会报错

update user set authentication_string = password ('new-password') where user = 'root';
<think>好的,我需要帮助用户找到在Windows系统上MySQL 5.7中通过配置文件设置跳过密码的方法。根据用户提供的引用内容,我需要先回顾相关的引用信息,然后整理出正确的步骤。 首先,引用[3]提到在Windows安装MySQL 5.7时,需要启动管理员模式的CMD,切换到bin目录,并执行mysqld –install进行安装。这可能涉及到服务的安装和启动。而用户的问题是关于跳过密码验证,通常这需要修改配置文件,并在启动时使用特定的参数。 在MySQL中,跳过密码验证通常是通过在配置文件中添加skip-grant-tables选项。这会让服务器启动时不加载权限系统,从而允许用户无需密码登录。然后可以进入MySQL进行密码重置。 不过用户提供的引用[1]提到MySQL 5.7中user表的密码字段已经从password改为authentication_string,所以在重置密码时需要更新这个字段。引用[2]展示了使用mysqladmin命令修改密码的方法,但用户现在需要的是通过配置文件跳过密码的步骤。 根据引用[5],虽然是在Linux环境下配置,但配置文件的使用方式在Windows下是类似的。需要找到my.ini文件,通常位于MySQL的安装目录或数据目录中。例如,在Windows中,可能是在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini。 步骤应该是: 1. 停止MySQL服务。 2. 在my.ini文件的[mysqld]部分添加skip-grant-tables。 3. 保存并重启服务。 4. 使用mysql -u root登录,无需密码5. 执行UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';来设置新密码。 6. 移除skip-grant-tables选项,重启服务。 需要确保用户正确找到配置文件的位置,并且注意在修改后刷新权限。同时,提醒用户在重置密码后移除skip-grant-tables选项,以保障安全。</think>### 如何在Windows系统的MySQL 5.7中通过配置文件跳过密码验证? #### 步骤说明 1. **停止MySQL服务** 通过Windows服务管理器或命令行停止MySQL服务: ```bash net stop mysql57 ``` (服务名称可能为`mysql`或`mysql57`,具体取决于安装时的命名) 2. **修改配置文件`my.ini`** - 找到MySQL配置文件`my.ini`,通常位于: - 安装目录下(如`C:\Program Files\MySQL\MySQL Server 5.7\`) - 或系统隐藏目录`C:\ProgramData\MySQL\MySQL Server 5.7\`[^3] - 在`[mysqld]`段落下添加以下配置: ```ini [mysqld] skip-grant-tables ``` 此配置会跳过权限验证,允许无密码登录。 3. **重启MySQL服务** ```bash net start mysql57 ``` 4. **无密码登录并重置密码** - 打开命令行,进入MySQL的`bin`目录(如`C:\Program Files\MySQL\MySQL Server 5.7\bin`) - 输入以下命令登录: ```bash mysql -u root ``` - 执行SQL语句更新密码(注意MySQL 5.7密码字段为`authentication_string`[^1]): ```sql UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; ``` 5. **恢复配置文件并重启服务** - 移除`my.ini`中的`skip-grant-tables`配置 - 重启MySQL服务: ```bash net stop mysql57 net start mysql57 ``` #### 注意事项 - 若找不到`my.ini`,可通过MySQL命令行工具执行`SHOW VARIABLES LIKE '%config%';`查找配置文件路径。 - 修改密码后需执行`FLUSH PRIVILEGES;`以刷新权限。 - 若使用`mysqladmin`重置密码,可参考命令:`mysqladmin -u root password 'new_password'`[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值