关于数据库:Node连接mysql报错Client-does-not-support-authentication-protocol

56次阅读

共计 868 个字符,预计需要花费 3 分钟才能阅读完成。

报错语句和起因:

报错语句:

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;

亲测完满解决,撒花 ★,°:.☆(~▽~)/$:.°★。。

正文完
 0