解决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 相关文章推荐
jqGrid增加时--判断开始日期与结束日期(实例解析)
Nov 08 Javascript
做好七件事帮你提升jQuery的性能
Feb 06 Javascript
JS实现控制表格单元格垂直对齐的方法
Mar 30 Javascript
javascript:void(0)点击登录没反应怎么解决
Nov 13 Javascript
jQuery简单设置文本框回车事件的方法
Aug 01 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
通过npm引用的vue组件使用详解
Mar 02 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
JS扩展String.prototype.format字符串拼接的功能
Mar 09 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
Mar 04 Javascript
在vue中使用echars实现上浮与下钻效果
Nov 08 Javascript
使用Canvas绘制一个游戏人物属性图
Mar 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
PHP环境搭建最新方法
2006/09/05 PHP
php中的时间处理
2006/10/09 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
浅谈Python基础之I/O模型
2017/05/11 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
世界上最大的二手相机店:KEN
2017/05/17 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
财务管理专业毕业生求职信范文
2013/09/21 职场文书
党员的自我评价范文
2014/01/02 职场文书
大专生自我评价
2014/01/28 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
Python基础详解之描述符
2021/04/28 Python
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers