Test Connection失败主因是驱动版本与MySQL认证插件不匹配、host用localhost而非127.0.0.1导致权限不一致、用户未授权'@127.0.0.1'或URL参数缺失allowPublicKeyRetrieval=true等。

PhpStorm 本身不运行 MySQL,它只是通过 JDBC 驱动连接远程或本地的 MySQL 实例——如果你连不上,90% 的问题出在驱动、URL 或权限上,而不是 PhpStorm 界面操作本身。
为什么 Test Connection 总是失败?
常见错误不是密码输错,而是:
-
MySQL 8.0+默认用caching_sha2_password插件,但旧版 JDBC 驱动(如mysql-connector-java:5.1.x)不支持,必须升级到8.0.23+驱动或改用户认证方式 - 本地 MySQL 绑定的是
127.0.0.1,但 PhpStorm 默认尝试localhost——这两个在 MySQL 里可能对应不同权限规则(localhost走 socket,127.0.0.1走 TCP) - 用户没被授权从 PhpStorm 所在机器(哪怕是本机)连接,比如只给了
'user'@'localhost',但 PhpStorm 实际用的是'user'@'127.0.0.1'
怎么配对 Database URL 和驱动版本?
URL 格式和驱动强相关,不能混搭:
- MySQL 5.7 及以前 +
mysql-connector-java:5.1.49→ URL 用jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&serverTimezone=UTC - MySQL 8.0+ +
mysql-connector-java:8.0.33→ URL 必须加allowPublicKeyRetrieval=true(尤其开启 SSL 时),且推荐显式指定时区:jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - 如果用 Docker 启的 MySQL,Host 别填
localhost,填宿主机 IP 或host.docker.internal(macOS/Windows),Linux 需额外配置
连接成功后,为什么 schema 不显示或表打不开?
不是连接问题,是权限或元数据读取限制:
立即学习“PHP免费学习笔记(深入)”;
- 用户缺少
SELECT权限以外的权限,比如SHOW VIEW、SHOW DATABASES,会导致 PhpStorm 无法列出库或加载视图定义 - MySQL 开启了
skip-show-databases,会直接屏蔽所有库列表请求 - 表名含大写字母或特殊字符(如
MyTable),而 MySQL 配置了lower_case_table_names=1,PhpStorm 可能因大小写匹配失败跳过加载 - 连接后右键数据库 →
Reload database schema手动触发刷新,比等自动识别更可靠
最常被忽略的一点:PhpStorm 的 Database 工具窗口里,双击表名打开的是只读预览;真要编辑数据,得右键 → Modify Column 或用 CONSOLE 标签页执行 SQL —— 它不提供 Excel 式的单元格直编。


















