mysql 8.0 报错 error 1819 是因默认启用 validate_password 插件,强制要求密码含大小写字母、数字、特殊字符且长度≥8;解决方法是编辑 my.ini 注释 plugin-load-add 行或调低策略参数(如 validate_password.length=4),保存后通过 phpenv 界面重启 mysql,并用 alter user 配合 flush privileges 修改密码。

MySQL 8.0 修改密码报错 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这是 MySQL 8.0 默认启用 validate_password 插件导致的——它强制要求密码必须含大小写字母、数字、特殊字符,且长度 ≥ 8。phpEnv 集成的 MySQL 8.0 默认开启该策略,直接执行 ALTER USER 'root'@'localhost' IDENTIFIED BY '123'; 就会触发这个错误。
解决思路不是“绕过密码强度”,而是明确关闭或调低策略,否则连 phpMyAdmin 登录、Laravel 迁移、WordPress 安装都会卡住。
- 先确认插件是否启用:
SHOW PLUGINS;查看validate_password状态(ACTIVE 表示已加载) - 临时禁用(重启后失效):
UNINSTALL PLUGIN validate_password; - 永久禁用(推荐):编辑 phpEnv 自带的 MySQL 配置文件
my.ini(通常位于phpEnv\MySQL\my.ini),在[mysqld]段落下添加一行:plugin-load-add=validate_password.dll→ 改为注释掉或删掉这一行 - 若想保留插件但放宽限制,可加以下配置(仍需写入
my.ini):validate_password.length=4validate_password.mixed_case_count=0validate_password.number_count=0validate_password.special_char_count=0
phpEnv 中 MySQL 8.0 的 my.ini 文件位置和重启方式
phpEnv 并不把 MySQL 当作 Windows 服务安装,而是以控制台进程方式运行,所以改完 my.ini 后不能靠“服务重启”,必须手动停止再启动 MySQL 实例。
- 配置文件路径一般为:
phpEnv\MySQL\my.ini(部分版本可能是phpEnv\MySQL8\my.ini,请按实际目录确认) - 修改保存后,在 phpEnv 主界面点击「MySQL」→「停止」,再点「启动」;或进命令行执行:
phpEnv\MySQL\bin\mysql-stop.bat+phpEnv\MySQL\bin\mysql-start.bat - 验证是否生效:启动后连接 MySQL,运行
SELECT @@validate_password_length;,返回NULL表示插件已卸载;返回数字则说明仍在运行,需检查my.ini是否写错位置或未生效
改密码时用 ALTER USER 还是 SET PASSWORD?
MySQL 8.0 废弃了 SET PASSWORD 语法(除非兼容模式开启),强行使用会报错 ERROR 1064 (42000)。必须用 ALTER USER,且注意用户名+主机名要完全匹配当前登录上下文。
- 常见误操作:
ALTER USER 'root' IDENTIFIED BY '123';→ 缺少@'localhost',实际账户可能是'root'@'127.0.0.1'或'root'@'::1' - 安全做法:先查真实用户记录:
SELECT User,Host FROM mysql.user WHERE User='root'; - 然后逐条修改:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123';、ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '123';、ALTER USER 'root'@'::1' IDENTIFIED BY '123'; - 最后别忘刷新权限:
FLUSH PRIVILEGES;
phpEnv 环境下 phpMyAdmin 登录失败的连带排查点
即使密码改成功了,phpMyAdmin 仍可能报 #1045 Cannot log in to the MySQL server,原因往往不在密码本身,而在认证插件不兼容。
- MySQL 8.0 默认用
caching_sha2_password认证插件,而旧版 phpMyAdmin(≤ 4.8)不支持 - 解决方法:把 root 用户的认证方式切回
mysql_native_password:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123'; - 同时检查 phpMyAdmin 的
config.inc.php中是否启用了$cfg['Servers'][$i]['auth_type'] = 'cookie';,避免与插件冲突 - 如果 phpEnv 自带的 phpMyAdmin 版本太老,建议手动替换为 5.2+ 版本(注意 PHP 版本兼容性)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











