mysql中Access denied for user 'root'@'localhost'错误,跳过验证更改默认密码

本文介绍在MySQL5.7版本中遇到无法使用root用户登录的问题及解决方法。通过停止mysqld服务并以--skip-grant-tables模式启动,绕过密码验证,更新mysql.users表中的authentication_string字段来重置root用户的密码。

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

今天重装了mysql,版本是5-7-21设置完环境变量后直接cmd输入mysql -u root -p

MySQL\bin>mysql -u root -p
enter password:

由于没有设置初始密码,直接回车也没用
显示
Access denied for user ‘root’@’localhost’

然后查了下怎么改密码或者跳过密码步骤,
借鉴了两处
https://jingyan.baidu.com/article/454316ab4e9e65f7a7c03ad1.html
https://www.cnblogs.com/wangbaobao/p/7087032.html
找到了跳过密码验证的方法:
1.在任务管理器结束mysqld.exe
输入命令

mysqld –skip-grant-tables

再新开一个cmd窗口
跳过mysql的用户验证
在cmd转到mysql\bin\
之后直接用mysql指令就可以进入

databases中的mysql保存用户名,

show tables查看所有表,会发现有个user表,这里存放的就是用户名,密码,权限等等账户信息。

2.之后想查看表中的user,password,host

mysql> update user set password=password('mmmm') where user='root' and host='localhost';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

再一查发现是5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

mysql>update mysql.user set authentication_string=password('*******') where user='*******';  #修改密码成功
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;  #立即生效
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

n>mysql -u ******* -p #以该用户登录成功.
Enter password: ********

改完密码后面就可以用新密码登录了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值