ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

win10安装了mysql8.0(.12)后,没怎么用过。今天要用时,发现连接不上。并报错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
原因:密码记错了或者不记得密码
在网上找到了一种方法:在mysql安装的目录下,找my.ini文件。在[mysqld]下 添加skip-grant-tables保存。打开终端,执行mysql -u root -p后,若出现输入密码,直接回车,即可连接数据库。然而,我依旧报了如上的错误信息。
解决办法:(以下操作以管理员身份运行)
1.先修改my.ini文件,在【mysqld】段下面加入skip-grant-tables,并关闭mysql服务。
2.切换到mysql的bin目录下。
3.使用mysqld --defaults-file=" my.ini配置文件的路径" -console -skip-grant-tables
4.执行mysqld --console --skip-grant-tables --shared-memory,注意执行后不要关闭这个终端。
再重新开一个终端,执行以下命令:

//转到mysql安装目录
1.cd 你的mysql安装位置的bin目录下
//输入mysql
2.mysql
//查看所有数据库
3.show databases;
4.use mysql;
//查看数据库密码 我的mysql版本为8.0.12 执行这条命令后 显示的密码是加密后的密文
5.select user,host,authentication_string from user ;
//刷新权限
6.flush privileges
//更改密码 注意mysql8.0以上密码策略改变 新密码格式为:大写字母+小写字母+特殊符号+数字否则密码不生效
7.ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
//离开数据库
8.quit

执行完上述命令后可以再次连接数据库看是否可以成功。
关闭两个终端,删除或注释my.ini的skip-grant-tables。

进入cmd.exe
执行mysql -u root -p,发现报错:ERROR 2003: Can't connect to MySQL server on 'localhost' (10061) 这是因为在第一步是,我们关闭了mysql服务。
此时,重新开启该服务,再次执行mysql -u root -p,连接成功。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)