本人系统安装的是mysql-installer-community-8.0.18.0.msi这个版本,然后我本地使用node-mysql去连接数据库。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost', //本机地址
user : 'root', //用户
password : '123456', //密码
port: '3306', //端口号
database: 'test' //要连接的数据库
});
connection.connect();
var sql = 'SELECT * FROM table1'; //查询table1表的所有数据
connection.query(sql,function (err, result) {
if(err){
console.log('[SELECT ERROR] - ',err.message);
return;
}
console.log('--------------------------SELECT----------------------------');
console.log(result);
console.log('------------------------------------------------------------\n\n');
});
connection.end();
运行node test.js
执行以下结果:
F:\All Project\test\node>node test.js [SELECT ERROR] - ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
报错: [SELECT ERROR] - ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
报错原因
mysql8.0以上加密方式,Node还不支持。
解决方案
1、进入终端登录mysql ,使用命名mysql -uroot -p 而后会出现输入密码此时输入mysql密码进入。 注意空格
2、输完密码会出现此页面
3、输入命令 : alter user 'root'@'localhost' identified with mysql_native_password by '123456';
将第一段命名的最后面by后的密码修改成自己的密码而后回车执行
4、执行完后会出现下图结果
5、最后执行命令 flush privileges;如果报的结果为以下,说明成功