解决 Trae MySQL MCP 连接失败:从 ENOENT 到认证兼容的全链路实战
在使用 Trae 工具远程访问内网 MySQL 数据库时,我遇到了从本地启动失败到认证兼容报错的一系列问题。经过逐步排查,最终通过本地命令映射+环境变量注入的方式完美解决,现将完整方案分享给大家。
一、问题背景
Trae 作为开发常用工具,支持通过 MCP 插件连接各类中间件。我在配置 MySQL MCP 时,先后遇到两个核心报错:
-
启动时报错
spawn uvx ENOENT,本地 MCP 服务无法启动; -
解决启动问题后,出现
Request timed out (-32001)连接超时,而同一网络环境下 MySQL Workbench 可正常连接 、Trae Redis MCP 可正常使用。
环境信息:
-
系统:Windows 11
-
MySQL 版本:8.xxx(默认认证插件
caching_sha2_password) -
网络:VPN 远程访问内网数据库
二、核心问题定位
1. uvx ENOENT 根源:Windows 系统命令后缀兼容缺陷
trae输出日志:
info\] \[mcp.config.usrlocalmcp.MySQL\] MCPServerManager#start Connecting with config... {"command":"uvx","args":\["--from","mysql-mcp-server","mysql_mcp_server"\],"env":.................. ...... \[error\] \[mcp.config.usrlocalmcp.MySQL\] MCPClient#onError 发生了系统错误 (spawn uvx ENOENT) MySQL MCP 依赖 `uvx` 命令启动,但 Windows 系统执行可执行文件时**必须带** **`.exe`** **后缀** ,而 Trae 配置中直接调用 `uvx`,导致系统无法识别对应的 `uvx.exe` 文件。 更关键的是,MCP 配置界面为只读状态,无法修改 `command` 配置项,本地配置文件要么是二进制格式,要么路径隐藏,无法直接编辑。 #### 2. `Request timed out` 根源:MySQL 8.x 认证插件不兼容 排除 VPN 网络、端口白名单、账号密码等因素后(Workbench 可正常连接),定位到核心矛盾: * MySQL 8.x 默认认证插件为 `caching_sha2_password`; * MySQL MCP 默认使用旧版插件 `mysql_native_password`; * 且 Trae 未开放认证插件配置入口,普通账号无权限修改 MySQL 服务端账号的认证插件。 ### 三、分步解决方案 #### 步骤 1:创建 `uvx.cmd` 映射文件,解决本地启动问题 通过创建批处理文件,让系统执行 `uvx` 命令时自动调用 `uvx.exe`,绕开 Trae 配置限制。 1. 找到 `uvx.exe` 所在路径(可从 Trae 日志中提取): `C:\Users\你的用户名\.trae-cn\tools\uv\latest` 2. 在该文件夹下**新建文本文档** ,重命名为 `uvx.cmd`(需显示文件扩展名); 3. 编辑 `uvx.cmd`,写入以下内容并保存: ```bash @echo off "%~dp0uvx.exe" %* ``` 4. 彻底关闭 Trae(任务管理器结束进程),重新启动,`ENOENT` 报错消失。 #### 步骤 2:升级 `uvx.cmd`,注入认证插件参数解决兼容问题 在 `uvx.cmd` 中添加环境变量,强制 MySQL MCP 使用 `caching_sha2_password` 认证插件,无需修改 Trae 任何配置。 修改后的 `uvx.cmd` 完整内容: ```bash @echo off :: 强制注入MySQL8.x认证插件参数 set MYSQL_AUTH_PLUGIN=caching_sha2_password :: 延长超时时间适配VPN set MYSQL_CONNECT_TIMEOUT=60000 :: 启动uvx.exe并传递所有参数 "%~dp0uvx.exe" %* ``` 保存后**重启 Trae** ,MySQL MCP 成功连接,日志显示 `Connected.`。 ### 四、验证结果 启动 Trae 后,查看日志,出现以下内容代表成功: `[info] [mcp.config.usrlocalmcp.MySQL] MCPClient#onStderr [Server Internal Log] Starting MySQL MCP server with config:` 此时可在 Trae 中正常执行 SQL 查询。  ### 五、总结与反思 本次问题本质是 **MySQL MCP 对 Windows 系统和 MySQL 版本的兼容性缺陷**: 1. 未适配 Windows 可执行文件后缀规则,导致本地启动失败; 2. 未开放认证插件配置,且默认插件与 MySQL 8.x 不兼容。 通过**命令映射+环境变量注入**的方式,无需修改工具源码和数据库权限,即可低成本解决问题。该方案同样适用于其他 MCP 插件的类似兼容性问题。