解决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 相关文章推荐
让mayfish支持mysqli数据库驱动的实现方法
May 22 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
Javascript高级技巧分享
Feb 25 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
Mar 04 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
Jan 27 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
Sep 15 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
Nov 02 Javascript
js实现内置计时器
Dec 16 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
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
JavaScript 指导方针
2007/04/05 Javascript
asp 的 分词实现代码
2007/05/24 Javascript
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
Python实现配置文件备份的方法
2015/07/30 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
python画图的函数用法以及技巧
2019/06/28 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
css3隔行变换色实现示例
2014/02/19 HTML / CSS
南京软件公司的.net程序员笔试题
2014/08/31 面试题
大学生职业规划前言模板
2013/12/27 职场文书
白酒市场营销方案
2014/02/25 职场文书
赤壁观后感(2)
2015/06/15 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
详解Js模块化的作用原理和方案
2021/04/29 Javascript
JavaScript实现简单拖拽效果
2021/09/15 Javascript
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技