VS Code连接SSMS 18报connect ECONNREFUSED 3306错误如何解决
问题根因
你当前的核心错误是使用了MySQL专用的Node.js驱动包mysql尝试连接Microsoft SQL Server数据库,二者属于完全不同的数据库产品,通信协议、默认端口都不匹配:
- MySQL默认端口是3306,也就是你报错里被拒绝连接的端口
- MS SQL Server默认端口是1433,你本地运行的SQL Server服务根本没有监听3306端口,自然会抛出连接拒绝错误
具体解决步骤
- 卸载当前安装的MySQL驱动
npm uninstall mysql
- 安装MS SQL Server官方适配的Node.js驱动
mssql
npm install mssql
- 替换为适配SQL Server的连接代码,示例如下:
const sql = require('mssql'); // 数据库连接配置 const dbConfig = { server: 'serverName', // 你的SQL Server实例地址,本地可以填localhost\\实例名 user: 'userName', // 数据库登录用户名 password: 'password', // 登录密码 database: 'dbName', // 要连接的数据库名 options: { encrypt: false, // 本地测试可以关闭加密,远程连接按需开启 trustServerCertificate: true // 本地开发环境跳过证书验证 } }; // 建立连接 sql.connect(dbConfig).then(() => { console.log("Connected to SQL Server successfully"); // 后续数据库操作写在这里 }).catch(err => { console.error("Connection failed: ", err); }).finally(() => { sql.close(); });
额外排查项
- 确认你SQL Server的实例是否开启了TCP/IP连接:打开SQL Server配置管理器 → 找到对应实例的网络配置 → 启用TCP/IP协议,重启SQL Server服务生效
- 如果你使用的是命名实例,需要在
server配置项填写格式为主机名\\实例名,同时确保SQL Server Browser服务正常运行 - 检查本地防火墙是否放开了SQL Server的1433端口访问权限
- 确认数据库的身份验证模式是混合验证(SQL Server和Windows身份验证模式),避免使用Windows账户登录时出现权限问题
内容的提问来源于stack exchange,提问作者Adam Abdellaoui
相关产品推荐
相关产品推荐

