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

发布时间 - 2026-01-11 00:05:04    点击率:

前言

最近用 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
 }
});

就是这么简单…

总结

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


# nodejs  # econnrefused  # connect  # node使用mysql获取数据库数据中文乱码问题的解决  # node+express框架中连接使用mysql(经验总结)  # Node.js使用MySQL连接池的方法实例  # Node.JS使用Sequelize操作MySQL的示例代码  # NodeJs使用Mysql模块实现事务处理实例  # 初步使用Node连接Mysql数据库  # MySQL数据库node使用详解  # 的是  # 文档  # 看了  # 你是  # 就能  # 就有  # 很多人  # 可以用  # 这个问题  # 错了  # 跑了  # 几种  # 解决问题  # 可以使用  # 快去  # 这篇文章  # 想把  # 涉及到  # 谢谢大家  # 这么简单 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python文件异常处理策略_健壮性说明【指导】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  C++用Dijkstra(迪杰斯特拉)算法求最短路径  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何注册花生壳免费域名并搭建个人网站?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Swift中循环语句中的转移语句 break 和 continue  html5的keygen标签为什么废弃_替代方案说明【解答】  如何在万网开始建站?分步指南解析  C语言设计一个闪闪的圣诞树  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel怎么上传文件_Laravel图片上传及存储配置  简单实现Android文件上传  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  开心动漫网站制作软件下载,十分开心动画为何停播?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Mybatis 中的insertOrUpdate操作  🚀拖拽式CMS建站能否实现高效与个性化并存?  Linux系统运维自动化项目教程_Ansible批量管理实战  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  网站制作软件有哪些,制图软件有哪些?  如何在Windows虚拟主机上快速搭建网站?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  JavaScript模板引擎Template.js使用详解  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Thinkphp 中 distinct 的用法解析  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  Python3.6正式版新特性预览  详解vue.js组件化开发实践  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  JavaScript实现Fly Bird小游戏  如何构建满足综合性能需求的优质建站方案?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Bootstrap CSS布局之列表  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何用花生壳三步快速搭建专属网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析