2021-07-02Node连接mysql,报错Client does not support authentication protocol...

报错语句和原因:

报错语句:

Client does not support authentication protocol requested by server
//NodeJS MySQL客户端不支持身份验证协议

原因:MySql 8.0换了新的身份验证插件(caching_sha2_password), 旧的身份验证插件为(mysql_native_password)。
以默认创建的用户和密码都是这个加密方式。而npm包里的mysql模块还是使用原来的mysql_native_password加密方式,两者不互通,连接会报错。

解决办法:

将用户密码从caching_sha2_password加密方式改回的 mysql_native_password加密方式。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456789';

如上,将root用户的密码123456789的认证修改成mysql_native_password,之后再连接mysql就会成功。
然后刷新缓存:

flush privileges;

注意点

1,@后面的host要和账号的host对应,比如我的账号host是%,语句就要改成%。


ALTER USER 'kason'@'%' IDENTIFIED WITH mysql_native_password BY '123456789';

2,报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'xxx'@'xxx'
其实没有进入mysql这个库,就去执行语句,自然是报错了。
顺序如下:
1,先进入mysql这个数据库。
2,执行改密码验证方式(建议和原密码一致,会一起修改掉密码)。
3,刷新缓存。

use mysql;

ALTER USER 'kason'@'%' IDENTIFIED WITH mysql_native_password BY '123456789';

flush privileges;

亲测完美解决,撒花★,°:.☆( ̄▽ ̄)/$:.°★* 。。*

你可能感兴趣的:(2021-07-02Node连接mysql,报错Client does not support authentication protocol...)