phpEnv MySQL 忘记密码需用管理员CMD运行 mysqld --skip-grant-tables --shared-memory 临时启动,再通过 mysql -u root 登录并执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_pass' 重置;完成后须删除 my.ini 中 skip-grant-tables 并重启对应 phpenv_mysql_xx 服务。

phpEnv 自带的 MySQL 默认密码是空,但一旦设过密码又忘了,就不能靠“空密码直接登录”来绕过——必须用 --skip-grant-tables 方式重置,否则连 mysql -u root 都会报 Access denied。
phpEnv 启动 MySQL 时如何加 --skip-grant-tables
phpEnv 没有图形化服务管理界面,不能像 phpStudy 那样点配置文件修改。它依赖 Windows 服务注册或手动启动脚本:
- 先在任务管理器里结束所有
mysqld.exe进程(不是“服务”,是进程) - 打开 phpEnv 安装目录下的
MySQL\bin,比如C:\phpEnv\MySQL\bin - 以管理员身份运行 CMD,cd 进入该目录,执行:
mysqld --skip-grant-tables --shared-memory
(--shared-memory是 phpEnv 常用通信方式,不加可能连不上) - 这个窗口要保持打开状态——它就是你的“无权限验证 MySQL 实例”
用 mysql 客户端连上去后,MySQL 8.0+ 必须用 ALTER USER
再开一个管理员 CMD,同样 cd 到 MySQL\bin,执行:
mysql -u root
(此时不输密码,直接回车)
进库后别急着 UPDATE user,MySQL 8.0+ 的 mysql.user 表里没有 password 字段,只有 authentication_string,且 PASSWORD() 函数已彻底废弃:
- 先选库:
USE mysql; - 刷新权限(避免缓存干扰):
FLUSH PRIVILEGES; - 改密码(必须带主机名):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_pass'; - 如果提示 “Your password does not satisfy the current policy requirements”,就先关策略:
SET GLOBAL validate_password.policy = LOW;
改完密码后 phpEnv 服务起不来?检查两个地方
phpEnv 默认把 MySQL 当作 Windows 服务安装,但你用 mysqld --skip-grant-tables 启动的是临时实例,不会注册为服务。所以重置完必须手动还原并重启服务:
- 关掉刚才两个 CMD 窗口(包括那个挂着
--skip-grant-tables的) - 回到 phpEnv 主界面,点“MySQL → 重启服务”——如果失败,说明服务配置还残留
skip-grant-tables - 去
MySQL\my.ini文件里搜skip-grant-tables,删掉或注释掉整行(哪怕只有一行,也会导致服务拒绝启动) - 再试一次“重启服务”,成功后用新密码连接:
mysql -u root -p
最容易被忽略的是:phpEnv 的 MySQL 服务名不是标准的 mysql,而是类似 phpenv_mysql_57 或 phpenv_mysql_80,改完密码后如果用系统命令 net start 手动启服务,得输对服务名;否则你以为重启了,其实什么都没发生。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











