Mac环境
在github上找了一个Express Demo运行,需要连接数据库。然后就在自己电脑mysql创建数据库连接,忘记了mysql密码了,然后百度各种密码修改,最后修改成功之后使用
必须勾选这个才能连接成功,但是使用node代码连接就一直失败。捣鼓白天也没解决(有哪位知道的希望留言告知下)。
最后决定删除mysql,下载重新安装一个,在删除的时候也是找的网上方法,把mysql本地文件也删除了。重新安装好mysql发现还是和上面一样,刷新数据库之后发现连接都连不上。最后想到一个办法
重置数据库。
然后使用工具重新连接,就和之前一样了,也不需要勾选那个套接字文件选项。
然后node代码连接连接mysql
var mysql = require("mysql");
var pool = mysql.createPool({
host: "localhost",
port: 3306,
user: "root",
password: "123456789",
database: "test",
});
pool.getConnection(function (err, connection) {
if (err) {
console.log("建立连接失败");
console.log(err);
} else {
console.log("建立连接成功");
console.log(pool._allConnections.length); // 1
connection.query("select * from user", function (err, rows) {
if (err) {
console.log("查询失败");
} else {
console.log(rows);
}
// connection.destory();
console.log(pool._allConnections.length); // 0
});
}
});
发现连接失败,报错信息:Client does not support authentication protocol requested by server;
(通过相关问题查阅,发现是由于navicat版本的问题造成连接失败。mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password)
最后百度解决:
1、mysql -u root -p;
2、alter user 'root'@'localhost' identified with mysql_native_password by '********';
3、flush privileges;
重新连接,连接成功。
推广一下自己开发的微信小程序,有兴趣的朋友可以玩一玩