datagrip连接phpenv的mysql需先确认mysql服务已运行,再用localhost(非127.0.0.1)、默认端口3306、root用户及对应密码连接,并为mysql 8.0+添加allowpublickeyretrieval=true&usessl=false参数,同时确保jdbc驱动版本匹配且字符集、时区配置正确。

phpEnv 本身不提供数据库服务,它只是 Windows 下的 PHP 运行环境套件(含 Apache、MySQL、PHP、phpMyAdmin),真正的数据库是它内置的 MySQL 实例。DataGrip 连接的不是 “phpEnv”,而是 phpEnv 启动的 MySQL 服务 —— 关键在于确认 MySQL 进程是否运行、端口是否开放、用户权限是否允许远程(或本地)连接。
确认 phpEnv 的 MySQL 是否正在运行
phpEnv 默认启动的是 MySQL 5.7 或 8.0(取决于版本),但不会自动开机自启。常见错误是:DataGrip 报 Connection refused 或 Can't connect to MySQL server on '127.0.0.1',本质就是 MySQL 没在跑。
- 打开 phpEnv 控制面板(通常是
phpenv.exe),检查 MySQL 行状态是否为 Running - 若为 Stopped,点击 Start;若启动失败,查看日志(
phpenv\mysql\data\*.err)中是否有端口被占用(如 3306 被其他 MySQL 或 MariaDB 占用) - 命令行验证:执行
mysql -u root -p,能进入交互式终端即说明服务可用(默认密码常为空或root)
DataGrip 中填写正确的连接参数
phpEnv 的 MySQL 默认配置较保守:绑定地址为 127.0.0.1(非 0.0.0.0),且 root 用户默认只允许从 localhost 连接 —— DataGrip 使用 127.0.0.1 时可能被拒绝,这是最常踩的坑。
-
Host 填
localhost(不是127.0.0.1),端口保持3306 -
User 填
root,密码按 phpEnv 设置的实际值填(若从未改过,多数版本为空或root) - 在
Advanced标签页中,添加 JDBC 参数:allowPublicKeyRetrieval=true&useSSL=false(MySQL 8.0+ 必加,否则报Public Key Retrieval is not allowed) - 若仍连不上,进 phpEnv 的 MySQL bin 目录执行:
mysql -u root -p -e "SELECT host,user FROM mysql.user;",确认root用户的host字段是否含localhost
必要时手动授权 root 用户从 127.0.0.1 连接
有些 phpEnv 版本会把 root 的 host 写死为 localhost,而 JDBC 驱动解析 127.0.0.1 时走的是 TCP/IP 协议栈,匹配不到 localhost(后者在 MySQL 中常映射为 socket 连接)。这时要么改 Host 为 localhost,要么补授权:
mysql -u root -p -e "CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION; FLUSH PRIVILEGES;"
注意:执行后需重启 phpEnv 的 MySQL 服务才生效;your_password 要和你在 DataGrip 里填的一致。
驱动版本与字符集必须匹配 phpEnv 内置 MySQL
phpEnv 自带的 MySQL 版本决定了你该用哪个 JDBC 驱动 —— 不能无脑选最新版。例如:
- phpEnv 内置 MySQL 5.7 → 用
mysql-connector-java-5.1.49.jar或8.0.28.jar(兼容模式) - phpEnv 内置 MySQL 8.0 → 必须用
mysql-connector-java-8.0.x.jar,且 DSN 中要加serverTimezone=Asia/Shanghai,否则报时区错误 - 在 DataGrip 的连接设置页点
Driver Options→Driver Files,确认已加载对应版本的 JAR;若缺失,点击Download或手动添加本地路径 - 在
General页的Database URL末尾追加:?characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai,避免中文乱码和时间错位
真正卡住的地方往往不是“怎么填”,而是 MySQL 进程没起来、root 权限没覆盖到当前连接方式、JDBC 驱动版本和 MySQL 大版本不匹配 —— 这三处查完,90% 的连接问题就定位了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











