场景:
最近安装了mysql8.0.19,安装的时候mysql会初始化一个密码,但是我按照初始化密码输进去后一直报:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
ps:个人理解是因为caching_sha2_password加密的问题,而修改密码后加密方法是:mysql_native_password
mysql8.0.19修改密码
1.打开cmd A窗口
(1)首先关闭mysql服务
net start mysql
(2)跳过权限表启动服务
mysqld --console --skip-grant-tables --shared-memory;
#--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
ps:启动后不要关闭A窗口
2.打开cmd B窗口
(1)进去mysql
mysql - u root -p
提示要输入密码,不用输入直接回车就可以了
(2)查询所有用户
select host,user,plugin,authentication_string from mysql.user;
上面可以看到plugin列可以看到都是caching_sha2_password
(3)修改密码和密码方式
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
这里修改了插件mysql_native_password。
(4)刷新权限
flush privileges;
(5)退出后重新登录输入123456,进去成功后,证明密码修改成功。
注意
好像插件一定要修改成mysql_native_password,我修改密码的时候前几次一直没有修改插件,一直为caching_sha2_password插件,所以也一直提示密码错误,改了成插件mysql_native_password就好了。