nodejs连接mysql

news/2025/2/19 7:56:45/
npm i express #node后端框架
npm i cors
npm i mysql
const app = require('express')();
const cors = require('cors');
const port = 5000;
const mysql = require('mysql')     //引入mysql 模块app.use(cors({}))const conn = mysql.createConnection({user: 'root',password: 'qwertyuiop1',//password: '123456',host: 'localhost',database: 'learn_test'
})app.get('/',(req,res)=>{
// 测试连接conn.connect(err=>{console.log(err,'如果为null 就是连接成功');})res.send("")
})app.listen(port,()=>{console.log(`${port}端口已监听`)
})

访问http://localhost:5000
在这里插入图片描述

error: er_not_supported_auth_mode: client does not support authentication protocol requested by server; consider upgrading mysql client

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你想要的密码';
FLUSH PRIVILEGES;

创建一张表

create table users(
uid int(20)not null unique auto_increment, #unique唯一约束,auto_increment:自增
name varchar(255) not null,
pwd varchar(255)not null);
const app = require('express')();
const cors = require('cors');
const port = 5000;
const mysql = require('mysql')     //引入mysql 模块app.use(cors({}))const conn = mysql.createConnection({user: 'root',password: 'qwertyuiop1',//password: '123456',host: 'localhost',database: 'learn_test'
})// 测试连接
conn.connect(err=>{console.log(err,'如果为null 就是连接成功');
})app.get('/',(req,res)=>{let sqlStr = `insert into users(name,pwd) values('${req.query.name}','${req.query.pwd}')`conn.query(sqlStr,(err)=>{if(err != null){console.log(err)}else {console.log("")}})res.send("插入成功")
})app.listen(port,()=>{console.log(`${port}端口已监听`)
})

需要的情况下

#查询表结构
desc 表名;
#删除表
drop table 表名;

node查询mysql

app.get('/selectUsers',(req,res)=>{let sqlStr = `select * from users`;conn.query(sqlStr,(err,results)=>{if(err != null){res.send(err)}else {res.send(results)}})
})

nodejs+rsa加密

npm i node-rsa

创建实例

var  NodeRSA  = require (' node-rsa '); var  key  = new NodeRSA[ keyData ,[ format ] ],[ options ] );

keyData - {string|buffer|object}用于生成密钥或以支持的格式之一生成密钥的参数。
format - {string}导入密钥的格式。查看有关导出/导入部分格式的更多详细信息。
options - {object}- 其他设置。

创建“空”键

var key = new NodeRSA();

生成新的512位长度密钥

var key = new NodeRSA({ b :512 });

导入/导出密钥

   /*实例*/var publicDer = key.exportKey('public');var privateDer = key.exportKey('private');console.log('公钥:',publicDer);console.log('私钥:',privateDer);key.importKey(result[1], 'private');/*语法*/key.importKey(keyData, [format]);key.exportKey([format]);

keyData - {string|buffer}- 可能是:
键入PEM字符串
包含PEM字符串的缓冲区
包含DER编码数据的缓冲区
对象包含关键组件
format - {string}- 用于导出/导入的格式ID。

加密/解密

/*加密*/
key.encrypt(buffer, [encoding], [source_encoding]);
key.encryptPrivate(buffer, [encoding], [source_encoding]); // 使用私钥进行加密 
/*解密*/
key.decrypt(buffer, [encoding]);
key.decryptPublic(buffer, [encoding]); // 使用公钥解密 /*实例*/
var encryData = key.encryptPrivate(req.body.user_pwd, 'base64','utf8');console.log('加密后的数据',encryData);
var decryptData = key.decryptPublic(result[0],'utf8');console.log('解密后的数据',decryptData);

http://www.ppmy.cn/news/90530.html

相关文章

4.Ansible Inventory介绍及实战 - A list or group of lists nodes

什么是inventory? 官方解释:Ansible automates tasks on managed nodes or “hosts” in your infrastructure, using a list or group of lists known as inventory. Ansible可以同时与您基础设施中的一个或多个系统协同工作。为了与多台服务…

EasyRecovery16绿色版安装下载及使用教程

如果你已经在下载了PC版本的EasyRecovery,那么该如何安装EasyRecovery呢?现在就呈上EasyRecovery教程,以便顺利完成安装。EasyRecovery不仅能够恢复多种类型的数据,更能够适用于不同媒体介质,其中包括计算机&#xff0…

总结MySQL 的一些知识点:MySQL 连接的使用

MySQL 连接的使用 在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。 本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。 你可以在 SELECT…

麓言信息 学习UI设计师有没有前途

而目前市场上的UI设计师大多从美工、平面设计师等转岗,自身缺乏系统的Ui设计培训和学习,很难适应当前企业的高规格要求,也导致了一名合格的Ui设计师在社会上是十分值钱、十分抢手的。现在越来越多的年轻群体已经把求职的目光聚焦在UI设计领域…

List<Model> distinct 不起作用

在对 List<Model> 使用 Distinct() 方法时&#xff0c;如果没有得到预期的结果&#xff0c;可能是由于你的 Model 类型没有正确重写 Equals() 和 GetHashCode() 方法所导致的。 当调用 Distinct() 方法时&#xff0c;它使用对象的哈希码和相等性来确定哪些元素是独特的。…

四.Retrofit

文章目录 前言1.如何封装OkHttp2.Retrofit的设计思想3.ServiceMethod存在的价值4.Retrofit的整理流程5.Retrofit使用到了哪些设计模式面试题 前言 核心思想就是AOP思想&#xff0c;面向切面编程。 AOP使用场景比如&#xff1a;LeakCanary、BlockCanary、Matrix、LifeCycle、Ok…

GMesh网格选项介绍

GMesh网格介绍 2D mesh algorithm MeshAdapt&#xff1a;这是一种自适应网格算法&#xff0c;可在需要更大的精度或在某些区域需要更密集的网格时自动添加额外的网格。该算法的优点包括较高的收敛性和灵活性&#xff0c;它可以让用户在需要的地方添加更多的网格&#xff0c;但…

[RSA议题分析] eBPF Warfare - Detecting Kernel eBPF Rootkits with Tracee

文章目录 简介议题分析基础知识用户空间与内核空间hookrootkit追踪技术 eBPF架构Tracee - 一个运行时安全检查工具 RootKit种类与各个阶段的攻防LD_PRELOAD RootKitKernel Module RooKitKernel RootKit HidingKernel RootKit Hooksyscall table hookingfile operations hooking…