后端Web开发:Express连接MySQL时Git-bash与localhost无响应问题
解决方案
核心错误修正
你首先犯了端口混用的基础错误:MySQL数据库服务和Express Web服务是两个独立的服务,不能占用同一个端口。
代码修改如下:
const express = require('express'); const mysql = require('mysql'); // Express服务端口用3000 const serverPort = 3000; const leaderboardDb = mysql.createConnection({ host: '127.0.0.1', user : 'root', password: 'personalProj15', // MySQL默认端口为3306,和Web服务端口分开 port : '3306', // 注意:如果还没创建test数据库,可以先把这行注释掉,等创建完数据库再加回来 // database: 'test' // Windows本地连接不需要配置socketPath,删掉这行即可 }) leaderboardDb.connect((err) => { if(err) { // 这里把错误完整打印出来,方便排查 console.log('数据库连接失败:', err); } else { console.log('MySQL connected'); } }) const app = express(); app.listen(serverPort, () => { console.log(`Server started on port ${serverPort}`); }) app.get('/createDb', (request, response) => { let sql = 'CREATE DATABASE leaderboardDatabase'; leaderboardDb.query(sql, (err, result) => { if(err) { console.log(err); response.status(500).send('数据库操作失败'); return; } console.log(result); response.send("数据库创建成功"); }) }) // 可选:添加根路由测试,解决访问localhost:3000返回Cannot GET /的问题 app.get('/', (req, res) => { res.send('服务运行正常'); })
后续排查步骤
- 确认已安装MySQL本体
npm安装的mysql包只是Node.js的连接驱动,不是数据库本身。如果你的Windows服务列表中找不到MySQL服务,需要先下载安装MySQL服务本体。 - 启动MySQL服务
按Win+R输入services.msc回车打开服务列表,找名称前缀为MySQL的服务(一般命名格式为MySQL+版本号,比如MySQL80),右键点击启动,设置启动类型为自动即可。 - 验证配置正确性
启动服务后再运行你的Node.js项目,控制台会打印连接成功/失败的日志,按日志提示调整账号密码等配置即可。 - 本地回环地址访问不会触发防火墙拦截,无需修改防火墙配置。
内容的提问来源于stack exchange,提问作者allTheGoodNamesWereTaken
相关产品推荐
相关产品推荐

