一、准备工作

安装依赖包:

npm i mysql -s

二、连接数据库

const mysql = require("mysql");
const db_config={
    host:"localhost",
    user:"root",
    password:"root",
    port:"3306",
    database:"mydb" 
}
let conn = mysql.createConnection(db_config);

// 连接数据库
conn.connect(err => {
    if(err) {
        throw err
    } else{
        console.log("连接成功!");
    }
})

// 查询数据库
conn.query("select * from user", (err, res) => {
    if(err){
        throw err
    }else{
        console.log(res);
        closeMysql(conn);
    }
});

// 关闭数据库
let closeMysql = conn => {
    conn.end(err => {
        if(err){
        	throw err
        }else{
            console.log('关闭成功!');
        }
	});
}

运行中若遇到如下报错,请检查输入信息是否正确hostportuserpassword 等),jdbc配置中拿到的相关信息尤其是密码很可能加密后的

Error: ER_ACCESS_DENIED_ERROR: Access denied for userroot‘@localhost (using password: YES)

node – MySQL 数据库连接配置项:

欢迎关注程序边界

三、数据池保持连接 & 公共方法封装

数据库连接池 pool 可以有效避免频繁连接、断开导致的资源消耗

1.封装

const mysql = require('mysql')

const db_config = {
	host:"localhost",
	user:"root",
	password:"root",
	port:"3306",
	database:"mydb" 
}

let sqlConnTemp = (sql, params) => {
  return new Promise((resolve, reject) => {
    let conn = mysql.createConnection(db_config)
    let closeMysql = conn => conn.end(err => if(err) throw err )
    conn.connect((err, conn) => {
      err ? reject(err) : conn.query(sql, params, (err, data, fields) => {
        err ? reject(err) : resolve(data)
      })
      closeMysql(conn);
    })
  })
}

let sqlConn = (sql, params) => {
  return new Promise((resolve, reject) => {
  	// 连接池(保持连接)
    const pool = mysql.createPool(db_config)
    pool.getConnection((err, conn)=>{
        err ? reject(err) : conn.query(sql, params, (err, data, fields) => {
	        err ? reject(err) : resolve(data)
      	})
      	conn.release() // 仅释放未关闭
      	// pool.end() // 关闭连接
    })
  })
}

module.exports = { sqlConn,sqlConnTemp }

2.调用

const { sqlConn }= require('./mysql')

sqlConn('select * from user_table where age = ? and sex = ?',[21, 1]).then((data) => {
    console.log(data)
    res.send(data)
}).catch((err) => {
    console.error(err)
    res.send(err)
})

若是担心网络问题造成连接失败可以在连接reject部分添加定时回调连接


未完待续。。。欢迎留言一起学习探讨


拓展阅读

四、拓展学习

1.mysql 命令行

(1)查看当前所有数据库

show database;

(2)使用指定数据库

use DBName;

(3)查看当前库的所有表:

show tables;

(4)查看其它库的所有表:

show tables from DBName;

(5)创建表:

create table tableName (
	colName dataType;
	colName dataType;
	...
);

(6)查看结构

desc tableName;

(7)查看当前版本

# mysql  Ver 8.0.32 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql -V
# 用账号 ODBC,连接上MySQL服务器,默认连接到localhost上的3306端口
mysql -v
# 仅限 windows 系统(`|`管道符;find命令查找字符串;注意引号
mysql --help | find "Ver"
# 仅限 linux系统(`|`管道符;grep命令查找字符串)
mysql --help | grep Ver

权限问题报错

  • 如果已经连接到了 mysql 服务,可以输入以下命令:
select version();

在这里插入图片描述
或:

status;

在这里插入图片描述
或:

s

在这里插入图片描述

2.语法规范

3.mysql 其他

(1)查看自己数据文件所在的位置

show global variables like "%datadir%";

登入后,一行命令直接查出:

在这里插入图片描述
数据整体搬迁直接迁移目录即可

my.ini

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:Program Filesmysql-8.0.19-winx64
# 设置mysql数据库的数据存放目录
datadir=D:Program Filesmysql-8.0.19-winx64Data
# 允许最大连接数
max_connections=200
# 允许连接失败次数(防止有人攻击数据库系统
max_connect_errors=10
# 服务端使用字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password插件认证
default_authentication_plugin=mysql_native_password
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用端口
port=3306
default-character-set=utf8

转载请留言

原文地址:https://blog.csdn.net/qq_32682301/article/details/128826764

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_39574.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注