nodejs连接mysql数据库遇到的一些问题

大前提:(如果已安装可跳过)
a:电脑装一个mysql数据库(百度,有很多)
b:找到这个目录在这里插入图片描述,新建文件my.ini,设置编码字符集,内容如下:

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\Program Files\MySQL\MySQL Server 8.0(注意:这里写你自己的目录)
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=C:\\web\\sqldata
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB


[mysql] 
default-character-set = utf8

命令行 show variables like ‘%char%’; 可以查看编码字符集显示(要先连接上数据库才能看到,怎么连接?看d)
在这里插入图片描述

c:然后找到这个目录在这里插入图片描述,shift+鼠标右键,打开命令窗口,执行命令 net start mysql,启动服务在这里插入图片描述
对应的 net stop mysql 退出服务;

d:这里说一下,用命令行连接mysql数据库,不想看的可以忽略直接看nodejs连接方式:

mysql -u root -p // 回车
Enter password:*******
在这里插入图片描述
连接成功。

e:最好是先创建一个数据库和表格以及几条数据,为nodejs连接做准备;这里不细说了,贴个连接自己试试吧。mysql命令行增删改查
或者自行百度。

nodejs连接方式
1.在node_modules里面下载mysql依赖,然后在server.js里面引入(server.js是写在项目根目录的node中间层)

var mysql = require("mysql");
var connection = mysql.createConnection({
	host     : 'localhost',
	user     : 'root',
	password : '密码',
	port: '3306',
	database : '数据库名称'
});
// 连接数据库
connection.connect();
// 声明查询语句
var  sql = 'SELECT * FROM 数据库里的某个表格名称';
//查
connection.query(sql,function (err, result) {
    if(err){
    	console.log('[SELECT ERROR] - 读取数据失败',err);
    	return;
    }
    if(!err){
		console.log("读取数据成功")
		console.log(result); 
	}
});
// 退出连接
connection.end();

2.执行完 命令 node server.js 之后,遇到了报错:[SELECT ERROR] - 读取数据失败 ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
翻译过来就是说:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端
还是不明白啥意思,各种百度,然后找到解决办法:(虽然还是不懂为什么这样,但能解决就好)
在mysql服务窗口执行命令:
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’,
然后窗口会显示 OK… ,
再执行 node server.js 就不会报错了。

nodejs就连接成功mysql了在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值