网站首页 > 基础教程 正文
如果大家需要八股文,或者想要跳槽、涨薪、进阶学习,那么可以留意公重号:码农补给站同时也会更新前端的时事
下载mysql镜像
在docker中搜索mysql,下载mysql镜像,界面版直接点击pull即可,如果使用命令行,执行下面代码进行安装:
# sudo docker pull 镜像名:版本号
sudo docker pull mysql # 本文安装的是latest版本
启动mysql服务
在控制台输入下面命令,启动mysql容器
sudo docker run --name my_blog -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql --lower_case_table_names=1
# –name:给新创建的容器命名,此处命名为demo_mysql
# -e:配置信息,此处配置mysql的root用户的登陆密码
# -p:端口映射,此处映射主机3306端口到容器pwc-mysql的3306端口
# -d:成功启动容器后输出容器的完整ID
# mysql:mysql镜像名字
# lower_case_table_names:mysql设置大小写是否敏感的一个参数
界面可视化工具安装与使用
界面可视化工具我用的DBeaver(点击进行下载),但是安装mysql驱动时候,一直报错com.mysql.cj.jdbc.Driver,是因为Maven地址失效无法下载,我们在窗口 - 首选项,找到Maven添加仓库地址如下:
阿里:http://maven.aliyun.com/nexus/content/groups/public/
腾讯:http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
我们驱动下载成功后,又遇见一个新的问题,一直报错Public Key Retrieval is not allowed,是因为当禁用 SSL/TLS 协议传输后,客户端会使用服务器的公钥进行传输,默认情况下客户端不会主动去找服务器拿公钥,进而会出现错误,我们需要在数据库 - 驱动管理器驱动属性中手动添加allowPublicKeyRetrieval属性,值为true。
再次点击进行连接,即可连接成功
通过node连接mysql数据库
# 新建文件夹,并通过npm init初始化仓库配置文件
npm init -y
# 安装mysql2
npm i mysql2
这里说明一下为什么要用mysql2,而不是mysql,因为二者的密码算法不同,在查阅资料后,发现mysql连接mysql 版本8及以上会报下面的错误,因此采用了mysql2
我们首先先向数据库添加表和一条数据,如下图:
在根目录下创建src目录,并添加db.js文件,通过mysql2连接mysql数据库代码,注意database与password是上面启动mysql时候定义的:
const mysql = require('mysql2')
//链接配置
var connection = mysql.createConnection({
host: 'localhost', //ip
user: 'root', //用户名
password: '123456',//密码
database: 'my_blog' //数据库名
});
//建立链接
connection.connect();
//进行查询user_info表中的数据
connection.query('SELECT * from user_info', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results);
});
我们将启动命令在package.json中进行定义,方便后续启动数据库连接,在script里面添加下述代码:
"scripts": {
"start": "node ./src/db.js"
},
在控制台运行npm run start,输出一个简单的数据库查询的返回,即数据库连接成功!
接口定义
在上面我们已经将数据库进行创建并能够连接了,这时候作为一个前端,需要调取接口来操作数据库,我们就需要定义接口来操作数据库了,我们先介绍一下需要用到的第三方依赖:
Express: Express是一个简洁而灵活的 Node的Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
body-parser: bodyParser中间件用来解析http请求体,是Express默认使用的中间件之一。使用express生成一个网站,它默认已经使用了bodyParser.json与bodyParser.urlencoded的解析功能,除了这两个,bodyParser还支持对text、raw的解析,综上所述,bodyParser可以理解为是用来解析json数据格式的。
cors: cors处理跨域问题
安装所需依赖,执行下面的命令
npm install express body-parser cors --save
在上面,我们已经可以获取到连接的实例connection,我们不可能每一次都重新连接,所以我们可以创建一个连接,将查询或修改的代码,单独写在一起,引入这个连接实例,我们在src下创建一个interface.js文件如下:
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const { connection } = require('./db')
const app = express();
const parser = bodyParser.urlencoded({ extended: false });
app.use(cors());
// 获取user_info表数据
app.get('/query/user-info', (req, res) => {
const sql = 'select * from user_info'
connection.query(sql, function (error, results) {
if (error) throw error;
res.send({
status: 200,
message: 'get 请求成功', //状态的描述
query: req.query, // 请求参数
data: results // 返回数据
})
});
})
// 更新用户名
app.post('/edit/user/userName', parser, (req, res) => {
const { id, userName } = req.query;
const sql = `update user_info set userName="${userName}" where id="${id}"`
connection.query(sql, function (error, results) {
if (error) throw error;
res.send({
status: 200,
message: 'post 成功', //状态的描述
query: req.body, // 请求参数
data: results // 返回数据
})
});
})
// 启动服务器
app.listen(3000, () => {
console.log('Server started on port 3000');
});
在上面的代码中可以看出,我们将db连接的实例,使用const { connection } = require('./db')引入,所以我们在db.js中需要将这个实例对外暴露,修改后代码如下:
const mysql = require('mysql2')
//链接配置
const connection = mysql.createConnection({
host: 'localhost', //ip
user: 'root', //用户名
password: '123456',//密码
database: 'my_blog' //数据库名
});
//建立链接
connection.connect();
module.exports = { connection }
为了方便,我们将package.json中的script新增一个命令如下:
"scripts": {
"start:db": "node ./src/db.js",
"start:serve": "node ./src/interface.js"
},
接下来我们在控制台分别启动db服务与interface接口,出现下面图中显示的,即为启动成功!
npm run start:db # 启动db服务
npm run start:serve # 启动interface接口
验证接口调用
1. 验证查询接口(get)
使用apiFox调取本地接口,查询到了数据库中数据,查询接口成功!
2. 验证修改用户名接口(post)
使用apiFox调取本地接口,修改用户名,重新查询用户信息,修改成功!
结语
我们在这篇文章中讲述了如何使用docker搭建mysql环境,并通过node从零开始创建一个简单的服务,并连接数据库,在搭建环境中间,作者也查阅了大量资料与踩坑,都在文章进行了说明,全部代码作者上传到了Gitee上面,有需要的掘友们可以下载进行尝试,不过数据库的搭建,就需要大家自己去配置了。
因为作者也是第一次尝试,所以可能设计层面并不是很理想,大家有好的建议,也可以打在评论区,大家一起探讨一下,不喜勿喷。
原文链接:https://juejin.cn/post/7311163800144773159
猜你喜欢
- 2024-12-02 GitHub精选 | 后台权限管理系统(基于Node.js)
- 2024-12-02 Node.js 的 5 个常见服务器漏洞
- 2024-12-02 Node-RED教程 – 22 modbus读取数据写入mysql并可查询显示曲线图
- 2024-12-02 MySQL 同步复制及高可用方案总结
- 2024-12-02 如何实现用prometheus+grafana实时监控mysql数据库?
- 2024-12-02 (完结无密) Vue3+Uni+Node+MySQL 从零实现跨端小程序的全栈应用
- 2024-12-02 Mysql-cluster搭建
- 2024-12-02 Mysql高可用方案--PXC
- 2024-12-02 Vue整合Node.js,直连Mysql数据库进行CURD操作
- 2024-12-02 MySQL数据库之Haproxy+PXC集群搭建(中)
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)