Database Client 连 MySQL 最省心,但必须填准五项:Host 填 127.0.0.1(非 localhost)、Port 显式写 3306、Password 空也需重输或填空格、Database 填真实库名、User 的 host 必须匹配;MySQL 8.0+ 需改认证插件为 mysql_native_password。

Database Client 插件在 VSCode 里连 MySQL 最省心,但填错 host、认证方式或端口,100% 连不上——不是插件问题,是配置踩坑。
MySQL 连接必填字段和常见填错点
点击侧边栏 Database 图标 → + Add Connection → 选 MySQL,以下五项必须准确填写:
-
Host:本地开发一律填127.0.0.1(填localhost会尝试走 Unix socket,而 Database Client 不支持);Docker 容器内访问宿主 MySQL,macOS/Windows 填host.docker.internal,Linux 填宿主机真实 IP -
Port:必须显式写,即使默认 3306;Docker 映射到 3307 就填3307,不能留空 -
Password:空密码必须删掉再重输一次,或填一个空格——留空会导致静默失败,无报错 -
Database:必须填具体库名(如myapp_dev),留空后执行SELECT * FROM users会直接报Table 'users' doesn't exist -
User:确认该用户 host 匹配,root@localhost无法通过127.0.0.1连,得建root@'127.0.0.1'或改用vscode_dev@'127.0.0.1'
MySQL 8.0+ 连不上?先查认证插件
错误信息含 ER_NOT_SUPPORTED_AUTH_MODE 或 Client does not support authentication protocol,基本就是 caching_sha2_password 认证不兼容。Database Client 底层用 mysql2 驱动,默认不启用对该插件的完整支持。
- 检查当前用户认证方式:
SELECT user, host, plugin FROM mysql.user WHERE user = 'your_user'; - 本地调试可改用户:
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass'; - 线上环境推荐新建专用账号:
CREATE USER 'vscode_dev'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'strong_pass';,再授权 - 别碰 root 用户的认证插件,尤其生产库
JSON 配置比表单更可控
Database Client 实际解析的是 JSON 或 URI,不是纯表单。用 JSON 模式能避免 URI 编码出错,也方便复用和版本管理:
{
"type": "mysql",
"name": "local-dev",
"host": "127.0.0.1",
"port": 3306,
"database": "test_db",
"user": "vscode_dev",
"password": "your_strong_pass"
}- 必须带
"type": "mysql",否则识别失败 -
port字段不能省略,即使为 3306 - URI 格式需加
mysql://前缀,且密码要 URL 编码:mysql://vscode_dev:your%40pass@127.0.0.1:3306/test_db -
charset和ssl不用手动设,插件自动用utf8mb4;SSL 只有对接云数据库时才建议勾require
PostgreSQL / SQLite / Redis 怎么配
这些数据库没 MySQL 那套认证坑,但参数习惯不同:
- PostgreSQL:
Host填localhost或127.0.0.1都行;默认端口5432;若用postgres用户连本地库,确保pg_hba.conf允许md5或trust认证 - SQLite:不用填 host/port/user/password,只填
Database路径,如/path/to/app.db;路径必须绝对,相对路径不生效 - Redis:填
Host和Port即可;密码填在Password字段,空密码也要清空后重输;不支持 ACL 用户名,只认密码
最易被忽略的是:MySQL 的 127.0.0.1 vs localhost 区分、认证插件切换、以及 JSON 配置中 port 的强制存在——这三个点卡住 90% 的首次连接失败。


















