node 版本 v12.12.0
mysql 版本 8.0
我再家尝试使用node连接mysql数据库的时候,发现连接不上。
报错信息显示为:

 {
        "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
}

经过多番查询资料,得到的答案是,因为mysql8.0默认的密码认证方案是'caching_sha2_password',而目前node默认的密码认证方案是'mysql_native_password',所以即使密码是对的,但是却无法认证成功。
root:用户名
asd123456: 密码
解决方案:

1、使用管理员运行命令提示符
2、进入到mysql安装目录的bin目录下默认安装路径大概是(C:\Program Files\MySQL\MySQL Server 8.0\bin)
3、在命令提示行中键入: mysql -u root -p
4、mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'asd123456';此时得到提示Query OK, 0 rows affected (0.01 sec),这里是修改密码的认证方式
5、mysql> flush privileges;此时得到提示Query OK, 0 rows affected (0.01 sec),这里是重启权限
6、mysql> exit 退出mysql

一图胜前言:
QQ图片20191113235212.png
2.png
3.png


UltramanWeiLai
10 声望0 粉丝