Express连接本地Mysql失败

博主在Mac上运行GitHub的ExpressDemo时遇到数据库连接问题,由于忘记MySQL密码,经过一系列尝试修改并重新安装MySQL后,仍无法通过Node.js代码成功连接。问题最终定位为MySQL8的加密规则变化。解决方案是通过MySQL命令行修改用户认证方式为`mysql_native_password`。问题解决后,Node.js代码能够正常连接数据库。
摘要由CSDN通过智能技术生成

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;

重新连接,连接成功。

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

可以使用 Node.js 的 mysql 模块来连接 MySQL 数据库,具体步骤如下: 1. 安装 mysql 模块:在终端中运行 npm install mysql 命令。 2. 在 Express 应用中引入 mysql 模块:在 app.js 或 index.js 文件中添加以下代码: const mysql = require('mysql'); 3. 创建 MySQL 数据库连接:在 app.js 或 index.js 文件中添加以下代码: const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'database_name' }); 其中,host 是 MySQL 服务器的地址,user 是 MySQL 用户名,password 是 MySQL 密码,database 是要连接的数据库名。 4. 连接 MySQL 数据库:在 app.js 或 index.js 文件中添加以下代码: connection.connect((err) => { if (err) { console.error('Error connecting to MySQL database: ' + err.stack); return; } console.log('Connected to MySQL database as id ' + connection.threadId); }); 5. 执行 SQL 查询:在 Express 应用中需要查询 MySQL 数据库时,可以使用以下代码: connection.query('SELECT * FROM table_name', (err, results, fields) => { if (err) throw err; console.log(results); }); 其中,table_name 是要查询的表名,results 是查询结果,fields 是查询结果的字段信息。 6. 关闭 MySQL 数据库连接:在 Express 应用结束时,需要关闭 MySQL 数据库连接,可以使用以下代码: connection.end((err) => { if (err) { console.error('Error closing MySQL database connection: ' + err.stack); return; } console.log('MySQL database connection closed.'); }); 以上就是使用 Express 连接 MySQL 数据库的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值