vs code 的 database client 和 sqltools 连接 mysql 8.0+ 需显式配置 mysql_native_password 认证、正确 database 字段、url 编码特殊字符,并注意 postgresql 的 ssl 显式禁用及驱动重启要求。

Database Client 连 MySQL 8.0+ 必须处理 caching_sha2_password
VSCode 的 Database Client(cweijan 版)不原生启用对 caching_sha2_password 认证插件的完整支持,即使密码正确、网络通,也会静默卡在“Connecting…”或报 ER_NOT_SUPPORTED_AUTH_MODE。这不是配置漏填,是协议栈默认未激活。
验证方式:进 MySQL 执行 SELECT user, host, plugin FROM mysql.user WHERE user = 'your_user';,若返回 caching_sha2_password,基本可锁定原因。
- 本地开发推荐新建兼容账号:
CREATE USER 'vscode_dev'@'localhost' IDENTIFIED WITH mysql_native_password BY 'strong_pass'; GRANT SELECT, SHOW VIEW ON mydb.* TO 'vscode_dev'@'localhost'; FLUSH PRIVILEGES; - 避免直接
ALTER USER生产用户;如必须改,用ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'pwd'; - 连接时 Host 填
127.0.0.1(不是localhost),否则可能走 Unix socket,而Database Client不支持 socket 连接
SQLTools 驱动必须重启 VS Code 才生效
SQLTools 主体插件本身不带任何数据库驱动,装完 SQLTools MySQL/MariaDB Driver 后若不重启 VS Code,日志只显示 Connection refused,实际根本没加载驱动——它不会尝试发起连接,更不会报认证错误。
常见误操作:装完驱动立刻点“测试连接”,失败后反复检查密码和端口,却忽略重启这一步。
- 驱动必须由
mtxr出品,其他名字相似的(如 “MySQL Connector/NET”)无效 - 连接配置必须写在
~/.sqltools/config.json(macOS/Linux)或%USERPROFILE%\.sqltools\config.json(Windows),图形界面填的参数不生效 - MySQL 8.0+ 场景下,JSON 中必须显式加
"authPlugin": "mysql_native_password"
database 字段留空会导致所有查询失败
两个主流插件都不自动执行 USE database_name。如果 database 字段为空,哪怕连接状态显示“已连接”,执行 SELECT * FROM users; 会直接报 Table 'users' doesn't exist 或 No database selected —— 和命令行里不先 USE 是同一逻辑。
-
Database Client:添加连接时,“Database” 输入框必须填具体库名(如myapp_dev),不能留空或只填空格 -
SQLTools:JSON 配置中必须有"database": "myapp_dev",向导创建时最后一步要手动确认该字段非空 - 密码含
@、/等字符需 URL 编码,例如my@pwd→my%40pwd,否则解析失败且无明确提示
PostgreSQL 连接必须显式关 SSL mode
Database Client 连 PostgreSQL 时,默认行为会尝试启用 SSL,而本地开发环境通常没配证书。结果是:连接状态短暂显示“已连接”,随即断开,日志里只有模糊的 Connection closed,没有具体错误指向 SSL。
解决方法是在连接配置 JSON 中强制禁用:
{ "name":"local-pg", "dialect":"PostgreSQL", "host":"localhost", "port":5432, "username":"postgres", "password":"123456", "database":"myapp_dev", "ssl": false }
注意:ssl: false 是 Database Client 的写法;SQLTools 则要求 "sslmode": "disable",字段名不通用,不能照搬。
复杂点在于:认证方式、连接字符串解析、SSL 行为、database 绑定,这四件事彼此不耦合,但任一出错都会表现为“连不上”或“查不了”,而错误信息往往不指向真实原因。填完参数别急着测,先核对这四个点。











