报错语句和起因:
报错语句:
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;