问题描述
Node.js用root身份连接MySQL 8.0及以上版本时,返回错误
ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocolrequested by server; consider upgrading MySQL client
问题出现的原因好像是MySQL 8.0及以上版本用了新的身份认证协议,不是传统的密钥,Node.js发送传统的密码过去无法通过认证。
解决方法
将要登录数据库的用户的密码以传统的协议设置。操作如下:
先在终端登录进入MySQL命令行,mysql -u root -p
,回车后输入密码。
然后输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
其中的123456换成你自己要设置的密码。
最后输入FLUSH PRIVILEGES;
并回车。
以下是终端返回结果:
然后就可以连接上数据库了~
Comments NOTHING