写在前面
今天把 nodejs 连接本地数据库的坑简单的踩一下,为后续写接口做个铺垫
安装 mySql (mac举例子)
安装地址
- 安装完成大概这个样子,起动起来就行
安装本地数据库连接工具(navicat举例子)
安装地址
- 连接之后 新建一个 Table 的数据 如图
本地启动 nodejs
// 生成一个 package.json 文件 便于后面管理插件
npm init -y// 安装 express
npm i express// 安装 mySqlnpm i mysql
实现连接数据库的代码
const express = require('express');
const mysql = require('mysql');const serve = express();
const port = 3000;// TODO: 创建数据库链接
const db = mysql.createConnection({host:"localhost",user:"root",password : "5211314Code",database:"sys",
});// TODO: 测试 test 请求接口
serve.get("/test",(req,res)=>{res.status(403);res.send("访问的资源不存在");
});// TODO: 获取用户数据请求接口
serve.get("/getlist",(req,res)=>{db.query("select * from userinfos",(err,result)=>{if(err){res.status(500).send("数据库访问失败");}else{res.status(200).send(JSON.stringify(result));}})
});// TODO: 启动监听
serve.listen(port,()=>{console.log("serve is running...");
});
启动测试
node linkSql.js
浏览器中访问测试
http://localhost:3000/test
http://localhost:3000/getlist
可能遇到的问题
- 问题1
问题原因:
这里是因为mysql8.0 以上的严格加密模式,nodejs 的是普通模式,这里即使密码是对的,也无法访问
解决方案:
// 终端打开 mysql
mysql -u root -p
// 输入密码之后 执行命令
alter user 'root'@'localhost' identified with mysql_native_password by '*******(你自己的数据库链接密码)';
- 问题 2
问题原因:
本地电脑安装 mysql 之后没有配置环境变量导致
解决方案:
// 找到本地安装的 mysql
sudo find / -name mysql
// 打开本地的配置文件
open ~/.bash_profile
// 添加下面的文件到该文件中
export PATH=${PATH}:/usr/local/mysql/bin // 根据自己的实际路径进行配置
// 刷新 配置文件
source ~/.bash_profile// 避免后续手动更新配置文件(可以不进行)
open ~/.zshrc
// 添加下面的内容到该文件中
source ~/.bash_profile // 该命令添加到.zshrc 文件中 保存即可
- 问题 3:
问题原因:
这里是因为 express 更新之后 语法变了,我这里用的之前的语法,大家以最新的语法为准,按照我上面的写法是不会有这个问题的
总结
这里使用 nodejs 作为后端开发的是可以用到的,这里是一个入门基础的过程,主要是展示链接本地数据库的一个步骤,后续遇到相关问题可以作为参考使用!