解决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 相关文章推荐
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
Javascript中this关键字的一些小知识
Mar 15 Javascript
jquery可定制的在线UEditor编辑器
Nov 17 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
基于javascript实现最简单选项卡切换
Feb 01 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
bootstrap-Treeview实现级联勾选
Nov 23 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 Javascript
vue中img src 动态加载本地json的图片路径写法
Apr 25 Javascript
微信小程序动态添加view组件的实例代码
May 23 Javascript
Vue中keep-alive的两种应用方式
Jul 15 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
python实现人工蜂群算法
2020/09/18 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
物流仓储计划书
2014/01/10 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
考试没考好检讨书
2014/01/31 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
植物生产学专业求职信
2014/08/08 职场文书
居委会工作总结2015
2015/05/18 职场文书
2016中秋节问候语
2015/11/11 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript