異常信息如下
{
"code": "ER_NOT_SUPPORTED_AUTH_MODE",
"errno": 1251,
"sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client",
"sqlState": "08004",
"fatal": true
}
博主使用工具版本如下
Node.Js 版本 14.3.0
MySQL版本 8.0.19
其實這個問題很簡單,在我早期的博文裏也有說明,這個問題形成的原因是MySQL8.0默認的密碼驗證方案是caching_sha2_password 而Node.Js默認密碼驗證方案是 mysql_native_password 所以即使你的密碼是正確,但是你還是驗證不了依舊會報錯,那麼如何解決呢?解決辦法把下面的命令一條一條的複製到你的終端或命令提示符裏去執行
# 1、登錄MySQL,使用命令
mysql -u root -p或mysql -u root -ppassword【ps:-ppassword後面的密碼是你的root密碼】
# 2、修改加密規則
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 3、更新用戶密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# 4、刷新權限
FLUSH PRIVILEGES;
# 5、重置密碼
alter user 'root'@'localhost' identified by '你的密碼';
Ps:如果你的Navicat12 或SQLyog工具連接MySQL8出現異常2059-Authentication plugin 'caching_sha2_password' cannot be loaded請看這裏點我查看解決方案