express.js连接mysql数据库时报错

189 阅读1分钟

express.js 链接数据库,

const mysql = require("mysql")

console.log("开始连接数据库");
var connection = mysql.createConnection({
  host: 'localhost',
  port: 3306,
  user: 'root',
  password: '123456',
  database: 'coder'
})



connection.connect()

connection.query('SELECT 1 + 1 AS solution', function (err, rows, fields) {
  if (err) throw err

  console.log('The solution is: ', rows[0].solution)
})


connection.end()

出现错误 Client does not support authentication protocol requested by server; consider upgrading MySQL client

image.png

原因:mysql版本问题。

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,所以可以需要改变mysql的加密规则

1.打开cmd,输入 mysql-uroot -p接着输入密码,但是管理员可能是不输入就可以成功,输入密码反而错误的 2.出现mysql>,就是登录mysql成功

image.png

3.输入 select version(); 查看版本,我的版本是8.0.31 4.查看你数据库的用户和加密规则 SELECT user,host,plugin from mysql.user;

image.png

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 将你root用户的加密规则改为8.0版本之前的规则,123456 换成你自己的密码
  2. FLUSH PRIVILEGES; 强制刷新
  3. SELECT user,host,plugin from mysql.user; 再次查看用户的加密规则

image.png