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

使用Node.js的MySQL X DevAPI报错:服务器未使用X协议

解决@mysql/xdevapi连接时的X Protocol错误

我来帮你搞定这个问题!你遇到的报错核心原因很明确:你代码里用的是传统MySQL协议的3306端口,但@mysql/xdevapi是专门基于MySQL X Protocol开发的连接器,它需要连接X Protocol的默认端口33060。

第一步:修改代码中的端口配置

把你的连接配置里的port从3306改成33060,修改后的代码如下:

const mysqlx = require('@mysql/xdevapi'); 
const dbCfg = { 
  "host": "127.0.0.1", 
  "port": 33060, // 这里改成X Protocol的默认端口
  "password": "xxxxxxxxx", 
  "user": "someuser", 
  "schema": "someschema" 
}; 
mysqlx.getSession(dbCfg).then(session => { 
  console.log("this is the session! ", session); 
});

为什么mysqlsh能正常连接?

mysqlsh是MySQL官方的Shell工具,它默认会优先尝试使用X Protocol连接33060端口,如果连接失败才会回退到传统协议的3306端口。所以你用相同参数能连,大概率是mysqlsh自动适配了正确的端口/协议,而你的Node.js代码明确指定了错误的端口。

额外排查点(如果改端口后还是报错)

  • 检查MySQL配置文件(比如my.cnf或my.ini)中的mysqlx_port参数,确认X Protocol的监听端口确实是33060(默认值是这个,但可能被修改过)
  • 在MySQL客户端执行show variables like 'mysqlx_port';,验证当前生效的X Protocol端口
  • 确认服务器防火墙没有拦截33060端口
  • 检查你的数据库用户是否具备X Protocol的连接权限(不过你用mysqlsh能正常连接的话,这个权限应该是没问题的)

内容的提问来源于stack exchange,提问作者Angel Lubenov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:37:00