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
原因:mysql版本问题。
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,所以可以需要改变mysql的加密规则
1.打开cmd,输入 mysql-uroot -p接着输入密码,但是管理员可能是不输入就可以成功,输入密码反而错误的 2.出现mysql>,就是登录mysql成功
3.输入 select version(); 查看版本,我的版本是8.0.31 4.查看你数据库的用户和加密规则 SELECT user,host,plugin from mysql.user;
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 将你root用户的加密规则改为8.0版本之前的规则,123456 换成你自己的密码
- FLUSH PRIVILEGES; 强制刷新
- SELECT user,host,plugin from mysql.user; 再次查看用户的加密规则