本文介绍: 运行中若遇到如下报错,请检查输入信息是否正确(host、port、user、password 等),jdbc配置中拿到的相关信息尤其是密码很可能是加密后的。若是担心网络问题造成连接失败,可以在连接reject部分添加定时并回调连接。数据库连接池 pool 可以有效避免频繁连接、断开导致的资源消耗。欢迎留言一起学习探讨。
一、准备工作
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('关闭成功!');
}
});
}
运行中若遇到如下报错,请检查输入信息是否正确(host、port、user、password 等),jdbc配置中拿到的相关信息尤其是密码很可能是加密后的
Error: ER_ACCESS_DENIED_ERROR: Access denied for user ‘root‘@‘localhost‘ (using password: YES)
- host:主机地址 (默认:localhost)
- user:用户名
- password:密码
- port:端口号 (默认:3306)
- database:数据库名
- charset:连接字符集(默认:‘UTF8_GENERAL_CI’,注意字符集的字母都要大写)
- localAddress:此IP用于TCP连接(可选)
- socketPath:连接到unix域路径,当使用 host 和port 时会被忽略
- timezone:时区(默认:‘local’)
- connectTimeout:连接超时(默认:不限制;单位:毫秒)
- stringifyObjects:是否序列化对象(默认:‘false’ ;与安全相关)
- typeCast:是否将列值转化为本地JavaScript类型值 (默认:true)
- queryFormat:自定义query语句格式化方法
- supportBigNumbers:数据库支持bigint或decimal类型列时,需要设此option为true (默认:false)
- bigNumberStrings:supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false)
- dateStrings:强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScriptDate类型(默认:false)
- debug:开启调试(默认:false)
- multipleStatements:是否许一个query中有多个MySQL语句 (默认:false)
- flags:用于修改连接标志
- ssl:使用ssl参数(与 crypto.createCredenitals 参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑 Amazon RDS 的配置文件
三、数据池保持连接 & 公共方法封装
数据库连接池 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)
})
拓展阅读:
四、拓展学习
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进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。