NodeJs 代码:
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: '',
database: 'dbtest1'
})
db.query('select 1', (err, results)=> {
if (err) return console.log(err.message)
console.log(results)
})
1、NodeJs 在连接 mysql 时报错:(我的mysql版本:8.0.28)
ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
原因:
MySQL8.0 默认的密码验证方案是 caching_sha2_password,而 NodeJs 默认密码验证方案是 mysql_native_password,所以即使密码是正确的,但是还是验证不了依旧会报错。
解决方法:打开终端输入:(注意后面的分号别漏了)
// 1、登录MySQL,使用命令
mysql -u root -p
// 回车后需要输入密码
// 2、修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的root密码' PASSWORD EXPIRE NEVER;
// 3、更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的root密码';
// 4、刷新权限
FLUSH PRIVILEGES;
// 5、重置密码
alter user 'root'@'localhost' identified by '你的密码';
2、再次连接时报错:
ER_BAD_DB_ERROR: Unknown database 'dbtest1'
解决方法:需要创建一个名为 dbtest1 的数据库
![](https://img-blog.csdnimg.cn/892e6813b27a4419b04775a013237290.png)
// 1、登录 mysql
mysql -u root -p
// 2、创建名为 dbtest1 的数据库
CREATE DATABASE dbtest1;