0%

node连接MySql报错ER_NOT_SUPPORTED_AUTH_MODE

报错信息

本人系统安装的是mysql-installer-community-8.0.18.0.msi这个版本,然后我本地使用node-mysql去连接数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const mysql=require('mysql')
//建立MYSQL与数据库的联系
const db=mysql.createPool({
host:'127.0.0.1',//数据库的ip地址
user:'root',
password:'123456',
database:'my_db_01',//指定要操作哪个数据库
})
//测试mysql能否正常工作
db.query('select 1',(err,result)=>{
//mysql工作期间报错
if(err)return console.log(err.message)
//能成功执行SQL语句
console.log(result);
})

运行db.js

1
2
PS D:\Vue-chat\Server> node db.js
ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

报错原因

mysql8.0以上加密方式,Node还不支持。

解决

第一步谷歌
查到了 https://stackoverflow.com/questions/50093144/mysql-8-0-client-does-not-support-authentication-protocol-requested-by-server
这个答案,和我报错的步骤基本一样,按照这个进行操作,登录MySql Command Line Client使用这个

1
2
3
4
5
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.27 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.08 sec)