提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、mySql相关
- 卸载
- 安装
- 设置
- 二、创建数据库
- 创建数据库
- 三、连接服务器
- 配置
- 数据库连接池
- 总结
前言
之前完成了node服务器的主体搭建,这一步来进行mySql的安装,安装环境是centOS7,然后由于忘记了mySql的密码,所以这里选择卸载重新安装;同时配置数据库连接池,避免多次连接的冲突问题
一、mySql相关
卸载
查看当前mySql安装情况
rpm -qa|grep -i mysql执行
yum remove mysql执行
rpm -e --nodeps xxx查找mySql目录
find / -name mysql删除对应的mySql目录
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/lib64/mysql
rm -rf /usr/share/mysql手动删除my.cnf
rm -rf /etc/my.cnf查看是否还有mySql文件
rpm -qa|grep -i mysql | xargs rpm -e --nodeps删除mySql遗留文件
find / -name mysql | xargs rm -rf
find / -name my.cnf | xargs rm -rf卸载完成!
安装
Tips:centOS默认安装MariaDB,安装MySQL,覆盖MariaDB
下载Mysql官方yum源
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmwget安装
yum install wgetyum安装
yum -y install mysql57-community-release-el7-10.noarch.rpm安装MySQL服务器
yum -y install mysql-community-server安装完成!
设置
启动mySql
systemctl start mysqld.service查看状态
systemctl status mysqld.service进入数据库
mysql -uroot -p
//root 123456Tip:如果修改简单密码, 需要进行设置,否则安全度太低😂
开启mySql远程访问
主要是用pyCharm远程连接数据库进行操作
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
mysql> flush privileges;
mysql> exit查看mysql端口号
show global variables like 'port';完成mySql的基础设置了
二、创建数据库
创建数据库
创建数据库命令
create database zyRes;Tip:我这里使用pyCharm进行数据库连接
建立表handInf,包括handId、handTime时间 handData数据 其中不设置handId为主键,否则不能插入多次结果
use zyInf;
create table handInf(
handId int not null,
handTime datetime not null,
handData varchar(2000) not null
)comment = '手诊表';插入数据操作
insert into handInf (handId, handTime, handData) values(...);三、连接服务器
配置
npm安装mySql模块
npm i mysql在app.js中引入模块
var mysql = require('mysql')创建数据库连接实例、配置参数
var connection = mysql.createConnection({
host: '39.99.214.230',
port: '3306',
user: 'root',
password: '123456',
database: 'zyRes'
});建立连接语句
connection.connect()此时设置后存在重要问题,存在连接冲突问题:
前一次的连接握手还未停止,下一次的连接就过来会引发冲突中断运行,
为解决这个问题,参考了网上的资料如下设置:
每次调用手动关闭连接 connection.end()
Error: Cannot enqueue Handshake after invoking quit.去掉connection.end()保证让让数据库自己释放不活跃的连接。
Error: Cannot enqueue Handshake after already enqueuing a Handshake.数据库连接已经执行了,不能进行多次连接了
为解决该问题,设置数据库连接池。
数据库连接池
新建根目录DB,以及子文件db.js
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 10,
host: '数据库的IP',
user: 'root',
password: '123456',
database: 'zyInf'
});
function query(sql, values, callback) {
console.log("数据库连接池");
pool.getConnection(function (err, connection) {
if(err) throw err;
console.log("获取连接 ");
connection.query(sql, values,function (err, results, fields) {
console.log(JSON.stringify(results));
//每次查询都会 回调
callback(err, results);
//只是释放链接,在缓冲池了,没有被销毁
connection.release();
if(err) throw error;
});
});
}
exports.query = query;新建同级文件handleSql.js,存储用到的sql语句
var handleSql = {
insert: "insert into handInf(handId, handTime, handData) values(?,?,?)",
getHistoryById: "select * from handInf where handId=?"
};
module.exports = handleSql;在路由文件handRouter.js中引入
var db = require('../DB/db');
var handleSql = require('../DB/handleSql')具体使用例子 查询操作
//数据库操作
const sqlParams = [handId]
db.query(handleSql.getHistoryById, sqlParams, (error, results) =>{
if(error){
console.log(error)
} else {
results = JSON.parse(JSON.stringify(results))
res.send(results)
console.log("这里是results:", results)
}
})成功!
总结
这篇文章记录的是将数据库连接上建议服务器的流程。包括了centOS环境下的卸载、安装、配置、连接及使用。卸载时需要卸载干净,配置时最好设置数据库连接池来管理连接。
















