node+express+mysql--(二)centOS数据库的卸载安装、配置及数据库连接池

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

之前完成了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.rpm

wget安装

yum install wget

yum安装

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	123456 

Tip:如果修改简单密码, 需要进行设置,否则安全度太低😂

开启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,包括handIdhandTime时间 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环境下的卸载、安装、配置、连接及使用。卸载时需要卸载干净,配置时最好设置数据库连接池来管理连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值