error 1045本质是mysql认证失败,主因包括root密码为空或不匹配、host限制(localhost/127.0.0.1不互通)、mysql 8.0+插件不兼容(caching_sha2_password)、权限表未刷新或my.ini误配skip_grant_tables。

phpEnv 本身不管理 MySQL 用户密码,它只是 Windows 下的集成环境套件(类似 XAMPP、WAMP),MySQL 的 ERROR 1045 仍由 MySQL 服务自身认证机制决定。你看到的错误,本质是 PHP 应用(或命令行)尝试用错误凭证连接本地 MySQL 实例导致的,和 phpEnv 界面或安装流程无直接关系。
为什么 phpEnv 启动后还是报 1045?
因为 phpEnv 安装时默认会初始化一个 root 用户,但:
- 安装过程未提示设置密码 → 实际密码为空(''),但 PHP 代码里写了 'root' 或其他非空字符串;
- 安装中途崩溃或被跳过初始化 → mysql.user 表中 root@localhost 记录缺失或 host 字段为 127.0.0.1 而非 localhost;
- 你手动改过 my.ini 却忘了删 skip_grant_tables,重启后 MySQL 实际没加载权限表,但客户端仍按常规流程发密码,触发校验逻辑错乱;
- MySQL 8.0+ 默认用 caching_sha2_password 插件,而 phpEnv 自带的旧版 mysqli 扩展不兼容,报错形态仍是 1045(不是明确插件错误)。
直接进 MySQL 命令行验证 root 是否能登录
别依赖 phpEnv 控制面板或 Navicat —— 先确认底层 MySQL 服务是否真能认出你的 root:
- 打开
phpEnv安装目录(如C:\phpEnv\MySQL\bin),用管理员权限运行cmd,cd 进去 - 执行:
mysql -u root -p,回车后直接按回车(试空密码),或输你记得的密码 - 如果进得去,说明密码没错,问题在 PHP 代码或连接参数;如果仍报 1045,说明 root@localhost 凭证确实失效
重置 phpEnv 中 MySQL 的 root 密码(Windows)
这是最常需操作的步骤,关键点在于:不用卸载重装,且必须停掉 phpEnv 内嵌的 MySQL 服务:
- 在
phpEnv主界面 → 点击「服务」→ 停止 MySQL(不是关闭窗口,是真正停止 Windows 服务) - 编辑
C:\phpEnv\MySQL\my.ini,在[mysqld]段落下新增一行:skip_grant_tables - 保存后,回到命令行,cd 到
C:\phpEnv\MySQL\bin,执行:mysqld --console(前台启动,看到 ready for connections 再 Ctrl+C 停掉;或直接双击StartMySQL.bat) - 再开一个 cmd,执行:
mysql -u root(此时不加-p,因跳过校验)→ 进入后执行:USE mysql; FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_pass'; - 删掉
my.ini里的skip_grant_tables,重启phpEnv的 MySQL 服务
PHP 代码里连不上?检查这三处硬编码
很多用户修复完 MySQL 密码,PHP 仍报 1045,往往卡在这些地方:
-
$conn = new mysqli('localhost', 'root', '123456', 'test');→ 密码写死了,但你刚设的是abc123,没同步改 - 用了
127.0.0.1当 host:new mysqli('127.0.0.1', ...)→ MySQL 里root@localhost和root@127.0.0.1是两个独立用户,必须显式创建后者或统一用localhost - MySQL 8.0+ 环境下,
mysqli扩展版本太老(如 PHP 7.2 自带的),不支持caching_sha2_password→ 改密码时强制指定插件(见上一步IDENTIFIED WITH mysql_native_password)比升级 PHP 更快
复杂点在于:同一台机器可能残留多个 MySQL 实例(比如之前装过 WAMP、Docker),phpEnv 启动的其实是另一个端口(如 3307)的 mysqld,而你改的是默认 3306 的配置。务必确认 phpEnv 的 MySQL 日志里写的监听端口,并在连接时显式指定(new mysqli('localhost', 'root', 'pw', 'db', 3307))。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











