mysql8.0密码重置win10_win10下修改mysql-8.0.22版本的密码

折腾了一上午+1小时,终于搞定。

作为前端,真是too young too simple.不知道这么简单个设置密码还有这么大差异。搞来搞去,反复百度。不一样的版本太多了。

最后说一下。我没有配置my.cnf文件,我初学者,不知道这个文件有什么意义。

下面说方法。

1.打开命令窗口cmd,输入命令:net stop mysql,停止MySQL服务,

2.开启跳过密码验证登录的MySQL服务

输入命令

mysqld --console --skip-grant-tables --shared-memory

7ce7ecd9d023

微信截图_20201124134956.png

3.再打开一个新的cmd,无密码登录MySQL,输入登录命令:mysql -u root -p,这时候还是让你输入密码,直接敲回车,到下一步。

密码置为空,命令如下:

use mysql

update user set authentication_string='' where user='root';

(mysql里面,每句话都要用;结尾,这很重要)

7ce7ecd9d023

image.png

5.退出mysql,执行命令:

quit

关闭以-console --skip-grant-tables --shared-memory 启动的MySQL服务,

打开命令框,输入:net start mysql 启动MySQL服务。

8.步骤4密码已经置空,所以无密码状态登录MySQL,输入登录命令:mysql -u root -p

9.利用上一篇博客中更改密码的命令,成功修改密码,如下图:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

7ce7ecd9d023

image.png

10.验证更改后密码正确登录

输入quit,退出当前登录,输入登录命令:mysql -u root -p

输入密码,成功登录,到此,重置密码结束。

<think>嗯,用户遇到了MySQL在启用--skip-grant-tables选项时无法执行某些语句的问题,错误代码是1290 HY000。我需要仔细分析这个问题,并给出解决方案。 首先,--skip-grant-tables选项的作用是跳过权限验证,允许用户无需密码登录,这在忘记root密码时非常有用。但用户可能忽略了,即使在这个模式下,某些需要权限检查的操作仍可能受限。比如,FLUSH PRIVILEGES语句可能需要特定的权限,或者在执行其他管理命令时遇到问题。 根据引用[3],重启服务器时使用--skip-grant-tables会禁用权限检查,但用户可能没有正确重新加载权限表。这时候,执行FLUSH PRIVILEGES可能会失败,因为系统认为权限未被加载。需要先手动加载权限表,或者重启服务后立即执行必要的操作。 另外,引用[2]提到,MySQL 8.0.22之后,某些操作不再锁定授权表,但如果在--skip-grant-tables模式下,权限系统可能处于不一致状态,导致语句执行失败。此时可能需要先退出该模式,正常重启MySQL,并重新加载权限,以确保所有操作都能正确执行。 用户提供的错误1290通常与权限相关,即使在跳过权限的情况下,某些内部机制可能仍然需要权限验证。因此,正确的步骤应该是先使用--skip-grant-tables登录,更新权限表后,立即刷新权限或重启服务以应用更改。 可能需要分步骤指导用户:首先停止服务,以--skip-grant-tables启动,然后更新root密码,刷新权限,最后正常重启服务。同时,注意在操作过程中避免执行需要权限检查的语句,直到权限完全恢复。 此外,用户可能在执行FLUSH PRIVILEGES时遇到问题,这时候需要检查是否已经正确修改密码,或者是否有其他服务配置问题。比如,是否在修改密码后没有正确退出维护模式,导致权限未正确加载。 总结解决方案:确保在--skip-grant-tables模式下完成必要的密码重置后,立即执行FLUSH PRIVILEGES,并正常重启服务,避免在维护模式下执行其他需要权限的操作。</think>### 问题分析:MySQL使用`--skip-grant-tables`时出现错误1290的解决方案 当MySQL以`--skip-grant-tables`模式启动时,系统会跳过权限验证流程,允许用户无需密码登录。但在此模式下,**部分需要权限检查的语句(如`FLUSH PRIVILEGES`或修改系统表的操作)可能会因权限缓存未加载而失败**,例如: ``` ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement ``` --- ### 分步解决方案 #### 步骤1:强制重新加载权限表 1. **以`--skip-grant-tables`模式启动MySQL服务** ```bash systemctl stop mysql mysqld_safe --skip-grant-tables & ``` 2. **登录MySQL并手动加载权限** 使用以下命令直接加载权限表,绕过权限验证: ```sql mysql> FLUSH PRIVILEGES; -- 强制重新加载权限表[^3] ``` - 此时可执行密码重置操作(例如修复root密码): ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` #### 步骤2:正常重启MySQL服务 1. **退出`--skip-grant-tables`模式** 完成操作后,重启MySQL服务以恢复权限验证: ```bash systemctl restart mysql ``` 2. **验证权限是否生效** 使用新密码登录并测试权限相关操作: ```sql mysql -u root -p -- 输入新密码 SHOW GRANTS; -- 查看权限是否正常 ``` --- ### 关键注意事项 1. **权限缓存的依赖关系** 即使跳过权限表,部分操作仍依赖内存中的权限缓存。通过`FLUSH PRIVILEGES`可强制刷新缓存[^3]。 2. **MySQL 8.0的改进** MySQL 8.0.22及以上版本优化了授权表的锁定机制,但`--skip-grant-tables`会完全绕过该机制[^2]。 3. **二进制日志恢复** 若因权限问题导致数据操作中断,可通过`mysqlbinlog`恢复指定时间段的操作[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值