admin管理员组

文章数量:1606471

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;

重新连接,连接成功。

推广一下自己开发的微信小程序,有兴趣的朋友可以玩一玩

本文标签: Expressmysql