sublime text 本身不能连接 mysql,所有 sql 执行均依赖本地 mysql cli 工具;必须先验证 mysql --version 可输出版本号,path 配置正确且重启 sublime 后生效,再配置 build system 或 sqltools,否则必现“command not found”或无输出。

Sublime Text 本身不能连接 MySQL,所有“执行 SQL”的效果都来自调用本地 mysql 命令行工具——你配的不是 Sublime,是系统里那个 mysql 能不能被它找到、能不能安全跑起来。
确认 mysql CLI 已安装且可被调用
这是硬性前提,跳过这步,后面所有配置都会卡在 command not found 或无输出。Sublime 启动时只读一次环境变量,PATH 配错或没重启编辑器,mysql --version 在终端能跑,Sublime 里照样找不到。
- 打开终端(macOS/Linux)或 PowerShell(Windows),执行
mysql --version - 必须返回类似
mysql Ver 8.0.33的输出;否则说明没装客户端,或 PATH 没生效 - macOS 推荐用 Homebrew:
brew install mysql-client(不是mysql全套服务) - Windows 用户从 MySQL 官网下载 MySQL Installer,勾选 “MySQL Client” 组件(别只装 Server)
- PATH 配好后,务必关闭并重新启动 Sublime Text
用 Build System 替代插件:轻量、可控、不依赖 Node.js
SQLTools 功能多但链路长(Node.js → 插件 → 驱动 → mysql),容易因版本/权限/编码问题失败;而自定义 Build System 直接调用 mysql,参数透明、错误可见、密码不硬编码在 JSON 里。
- 菜单栏选择 Tools → Build System → New Build System…
- 填入以下内容(注意替换
host、user、database,密码建议用mysql_config_editor加密):
{
"cmd": ["mysql", "-h", "localhost", "-u", "root", "-D", "test_db", "-e", "source $file"],
"selector": "source.sql",
"shell": true,
"encoding": "UTF-8"
}
-
-e "source $file"表示执行当前 SQL 文件全部内容;如需选中部分语句,得改用 stdin 方式(见下一条) - 若要支持选中执行,把
cmd改为:["mysql", "-h", "localhost", "-u", "root", "-D", "test_db"],再加"stdin": true - 务必设
"shell": true,否则$file不展开;Windows 下路径含空格需额外加引号包裹
避免密码明文与 UTF-8mb4 解码失败
直接在 Build System 或 SQLTools 配置里写 "password": "123456" 是高危操作——文件可能被 Git 提交、被同事看到;同时 MySQL 默认字符集若为 utf8mb4,Sublime 输出面板常乱码,不是编码设错了,而是 mysql CLI 没带 --default-character-set=utf8mb4 参数。
- 用官方工具加密登录信息:
mysql_config_editor set --login-path=local --host=localhost --user=root --password(输密码后回车) - Build System 中用
--login-path=local替代-u/-p,既安全又免输密码 - 加
--default-character-set=utf8mb4到cmd数组里,否则中文、emoji 显示为 ? 或乱码 - SQL 文件本身保存为 UTF-8(无 BOM),Sublime 右下角状态栏确认编码正确
SQLTools 插件常见失效点
它看起来更“数据库客户端”,但实际稳定性取决于三段链路:Node.js 版本 → SQLTools 插件版本 → 底层驱动(如 mysql2)是否匹配。任一环节不兼容,就会报 Connection refused 或静默失败。
- 检查 Node.js 是否在 PATH 中:
node --version和npm --version都要有输出 - SQLTools 要求 Node.js ≥ 16.x;旧版 Sublime(如 4126 之前)可能不兼容最新 SQLTools
- 连接配置里的
"type": "mysql"对应的是mysql2驱动,不是mysql(已废弃) - 如果结果面板只显示
Query executed successfully却没数据,大概率是没开"show_output": true或驱动未返回结果集 - 不要指望事务延续——每次 Ctrl+Shift+E 都是全新连接,
BEGIN/COMMIT无法跨执行保留
真正关键的从来不是 Sublime 怎么配,而是你本地那个 mysql 命令能不能干净、稳定、带正确参数跑起来;所有插件和构建系统,只是它的外壳。环境没理清就猛配 JSON,最后只会反复调试“为什么没反应”。











