You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS无法连接本地MySQL(localhost:3306)问题求助

NodeJS连接本地MySQL失败排查方案

首先,你的代码只提示了错误但没输出具体详情,这会导致无法定位问题。先修改代码,把完整错误信息打印出来:

const mysql = require('mysql');

const connection = mysql.createConnection({
    host: 'localhost',
    port: 3306,
    database: 'test',
    user: 'root',
    password: 'root'
});

connection.connect(function (err) {
    if(err) {
        console.log("error occured: ", err); // 打印完整错误信息,方便定位问题
    }
    else {
        console.log("connection created");
    }
})

运行修改后的代码,根据输出的具体错误,对照下面的常见原因排查:

  • MySQL服务未启动:检查本地MySQL服务是否处于运行状态。Windows可在「服务」列表里查找MySQL;Mac/Linux用systemctl status mysql(系统自带)或brew services list(brew安装的)查看,确保服务为running状态,未启动则手动启动。
  • 端口不匹配:确认MySQL实际监听的端口是3306。查看MySQL配置文件(Linux/Mac为my.cnf,Windows为my.ini)里的port字段,若端口不是3306,要么修改代码里的port值,要么将MySQL端口改回3306。
  • 目标数据库不存在:登录MySQL客户端,执行SHOW DATABASES;查看是否存在test数据库,没有的话用CREATE DATABASE test;创建。
  • 账号密码错误:用mysql -u root -p登录MySQL客户端,输入密码root验证是否能成功登录。如果密码不对,要么修改代码里的password字段,要么重置MySQL的root密码。
  • 权限不足:若root账号被限制了本地连接权限,登录MySQL后执行以下命令刷新权限:
    GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'root';
    FLUSH PRIVILEGES;
    
    之后再尝试连接。
  • 依赖包兼容性问题:旧版mysql包可能存在兼容性问题,换成官方推荐的mysql2试试:
    1. 卸载旧包:npm uninstall mysql
    2. 安装新包:npm install mysql2
    3. 代码里修改为const mysql = require('mysql2');,其余逻辑不变。
  • 防火墙拦截:本地防火墙或安全软件可能拦截了3306端口,暂时关闭后再测试连接。

内容的提问来源于stack exchange,提问作者Praneet Debnath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:05:31