用cmd登录数据库
mysql -u root -p
如果有密码输入密码,没有密码直接回车
步骤:重置密码为空
update user set authentication_string='' where user='root';
flush privileges;
注意必须要flush刷新
然后 “修改密码”
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
此时如果提示:ERROR 4058 (HY000): 1 factor authentication method does not match against authentication policy. Please refer @@authentication_policy system variable.
“修改my.ini配置文件”
那么需要到配置文件my.ini文件中修改内容,将authentication_policy=caching_sha2_password,, 改为:authentication_policy=*,, 表示支持任意加密方式。修改完后,重启mysql服务。
在这里,重点讲怎么修改my.ini文件里的内容。正常来说my.ini文件都会在C:\Program Files\MySQL\MySQL Server 8.0路径下,或者就是在C:\Program Files\MySQL\MySQL Server \8.0\bin(或者etc)里。
如果上述的都没有的话,就到ProgramData文件夹中去找,ProgramData文件夹在C盘中,需要注意的是,ProgramData属于系统保护文件,存放安装软件数据的,所以会被隐藏(下图以Windows10为例,找到ProgramData的方式),在ProgramData中找到Program Files\MySQL\MySQL Server 8.0路径,记事本打开my.ini,执行本文上述的“修改my.ini配置文件”操作
下图为获取修改my.ini文件的权限
注意,此时上述内容中密码置空是可以运行的,但是密码还没有修改为‘123456’,所以再次进入数据库时直接回车就可以,进入之后在此执行“修改密码”即可修改密码。
参考:mysql8.0.27之后无法指定加密方式创建用户或者修改密码 - 小泉哥 - 博客园 (cnblogs.com)