解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题


Posted in Javascript onMarch 09, 2017

前言

最近用 Node 写一个小玩意,需要用到 MySQL 数据库,现在用得最广泛的是 mysql 这个库。然后呢,现在 ORM 这么火,干脆也上 ORM 吧,正好我也不会可以学习一下,于是找到了 Sequelize.js 这个 ORM 库。

发现问题

看看 Sequelize 的文档,so easy,两分钟搞定~

import Sequelize from 'sequelize';
let sequelize = new Sequelize('database', 'username', 'password', {
 host: 'localhost',
 port: 3306,
 dialect: 'mysql',
 pool: {
  max: 5,
  min: 0,
  idle: 10000
 }
});
// ...后面还有一堆懒得贴了

运行一下

SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306

什么鬼,为什么会出现这个错误呢?我明明设置的是 localhost,为什么会变成 127.0.0.1?

解决问题

照例先谷歌,确实发现了很多人也遇到了这个问题,解决方法大概有这么几种:

     1、你丫以为不用装 MySQL 就能跑了么?快去装数据库!

     2、你数据库运行了么你?赶紧 /etc/init.d/mysqld start 运行起来

     3、端口写错了

     4、你是不是开启了 skip-networking 这个选项?Remove it !

看到这里,我反应过来了,因为我的数据库不涉及到远程访问,只要使用 Unix socket 通信就够了,于是就启用了 skip-networking 让 MySQL 不监听指定端口。

先科普一下 skip-networking 是什么

Do not listen for TCP/IP connections at all. All interaction with mysqld must be made using named pipes or shared memory (on Windows) or Unix socket files (on Unix). This option is highly recommended for systems where only local clients are permitted.

翻译一下就是:

不要监听 TCP/IP 连接。所有与 mysqld 的交互必须使用命名管道或共享内存(在 Windows 上)或 Unix socket 文件(在 Unix 上)。强烈建议对只允许本地客户端的系统使用此选项。

来源

但是为了安全性,我并不想把这个选择给移除,难道只好忍痛不用 ORM 了吗?

因为看了文档,mysql 这个连接库是可以使用 socketPath 这个属性指定 Unix 套接字文件,但是 Sequelize.js 没发现有关属性。

最后只好发 issue,不久就有 dalao 回答说可以用 dialectOptions 设置 mysql 的属性。

下面是测试成功的代码:

import Sequelize from 'sequelize';
let sequelize = new Sequelize('database', 'username', 'password', {
 host: 'localhost',
 port: 3306,
 dialect: 'mysql',
 dialectOptions: {
  socketPath: '/tmp/mysql.sock' // 指定套接字文件路径
 }
 pool: {
  max: 5,
  min: 0,
  idle: 10000
 }
});

就是这么简单…

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript删除option选项的多种方法总结
Nov 22 Javascript
jQuery插件slider实现拖动滑块选取价格范围
Apr 30 Javascript
jQuery实现图片轮播特效代码分享
Sep 15 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
Feb 16 Javascript
AngularJS上拉加载问题解决方法
May 23 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
js中实例与对象的区别讲解
Jan 21 Javascript
微信小程序使用map组件实现路线规划功能示例
Jan 22 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 #Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 #Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 #Javascript
微信小程序 五星评价功能的实现
Mar 09 #Javascript
javascript实现数据双向绑定的三种方式小结
Mar 09 #Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
Mar 09 #Javascript
Vue监听数据对象变化源码
Mar 09 #Javascript
You might like
DedeCms模板安装/制作概述
2007/03/11 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
Python用模块pytz来转换时区
2016/08/19 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python读取word文本操作详解
2018/01/22 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
python3获取当前目录的实现方法
2019/07/29 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
生产管理的三大手法
2013/11/11 职场文书
物业电工岗位职责
2013/11/20 职场文书
军训学生自我鉴定
2014/02/12 职场文书
实验室的标语
2014/06/20 职场文书
离婚财产处理协议书
2014/09/30 职场文书
护士求职自荐信范文
2015/03/04 职场文书
会计专业求职信范文
2015/03/19 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers