database client是vscode连接mysql最省事的选择,因其原生支持5.7~8.4及caching_sha2_password认证,填完host/port/user/password/database五项即可测试连接,无需额外驱动、不卡connecting、不报协议错误。

Database Client 是当前 VSCode 连 MySQL 最省事的选择,只要 MySQL 服务在跑、用户权限配对、参数填对,点“测试连接”就能通——不用装额外驱动、不卡 Connecting、不报 Client does not support authentication protocol。
该装哪个插件:Database Client 还是 SQLTools?
只连 MySQL(或加个 PostgreSQL/SQLite 做临时查),选 Database Client(作者 cweijan);要同时管 MySQL + SQL Server + Oracle + 多环境变量切换,才用 SQLTools(作者 mtxr)+ 对应驱动。
装错插件是连不上的头号原因:MySQL Syntax 只做高亮,SQLTools MySQL Driver(非 mtxr 出品)已废弃,vscode-mysql 不支持 caching_sha2_password —— 它们要么没连接能力,要么一连就挂。
-
Database Client自带完整协议栈(MySQL 5.7~8.4,含caching_sha2_password),不依赖 Java、不读~/.sqltools/config.json,填完五项直接测 -
SQLTools必须配SQLTools MySQL/MariaDB Driver(mtxr 出品),且装完必须重启 VS Code,否则驱动不加载,日志只显示Connection refused,实际根本没启动
Host 填 localhost 还是 127.0.0.1?Docker 和 M1 怎么填?
本地开发时,localhost 在某些场景下会走 Unix socket 路径(比如 macOS 默认监听 /tmp/mysql.sock),而 Database Client 不支持 socket 连接 —— 所以一律填 127.0.0.1 更稳。
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
- Docker 容器内访问宿主 MySQL:
host.docker.internal(macOS/Windows),Linux 则填宿主机真实 IP(如192.168.1.100) - WSL2 中 MySQL 运行在 Linux 子系统里:查
cat /etc/resolv.conf | grep nameserver,取nameserver后的 IP(通常是172.x.x.1) - Mac M1 + Rosetta:填
127.0.0.1,避免 DNS 解析差异导致超时
为什么连上了却报 “No database selected” 或 “Table 'xxx' doesn't exist”?
这不是连接失败,是没指定默认数据库。两个插件都不自动 USE 库,SELECT * FROM users; 会直接报错,和命令行里不执行 USE mydb; 是一个道理。
-
Database Client:添加连接时,database字段必须填具体库名(如myapp_dev),留空 → 所有查询失败 -
SQLTools:JSON 配置里必须显式写"database": "myapp_dev";用向导创建时,最后一步务必确认 Database 输入框有值 - 密码含
@、/等字符:URL 编码,比如my@pwd→my%40pwd
连得上但执行 SQL 没反应?关键在连接激活状态
VSCode 不自动把 SQL 文件和某个连接绑定,必须手动激活上下文,否则右键“执行”只会弹出 No active connection。
-
Database Client:打开 .sql 文件后,右上角会出现连接下拉框,必须手动选一个已配置的连接 -
SQLTools:按Ctrl+Shift+P→ 输入SQLTools: Connect to Database激活,再执行 - 执行粒度要注意:不选中语句就按
Ctrl+Enter,只执行光标所在行;想跑整文件,得右键 →SQLTools: Run Current File(Database Client同理,需先选中全部内容)
真正的难点不在插件安装,而在 MySQL 用户权限和网络可达性——比如 root@localhost 无法通过 127.0.0.1 登录,得单独建 root@'127.0.0.1';又比如 Docker 容器没暴露端口、防火墙拦截、MySQL 配置里 bind-address 还是 127.0.0.1 却试图从外部连。这些底层问题,插件再好也绕不过。










