解决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中的不可见数据类型
Dec 02 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
Angular ng-repeat 对象和数组遍历实例
Sep 14 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
在小程序中使用canvas的方法示例
Sep 17 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
vue-router传参用法详解
Jan 19 Javascript
关于layui flow loading占位图的实现方法
Sep 21 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
Jun 02 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
基于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
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
JS backgroundImage控制
2009/05/19 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
提高python代码运行效率的一些建议
2020/09/29 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
激励员工的口号
2014/06/16 职场文书
留学推荐信中文范文
2015/03/26 职场文书
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
mysql如何查询连续记录
2022/05/11 MySQL