最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎样解决MySQL安装后无法执行任何操作提示必须先修改密码?
时间:2026-07-08 10:46:52 编辑:袖梨 来源:一聚教程网
ERROR 1820 是因 MySQL 5.7.6+ 默认启用密码过期机制,初始密码被标记为过期,必须用 ALTER USER 'user'@'host' IDENTIFIED BY 'new_pass' 或 ALTER USER USER() IDENTIFIED BY 'new_pass' 主动重置;缺 host 或密码不满足 validate_password 策略(如长度、复杂度)也会触发该错误。
直接用 ALTER USER 重置密码就能解决,不需要重启、跳过授权或改配置文件。
为什么一登录就报 ERROR 1820?
MySQL 5.7.6+ 默认启用密码过期机制,安装时生成的初始密码被标记为“已过期”。哪怕你刚输对密码进去了,只要没显式执行密码重置,所有命令(SHOW DATABASES、USE mysql、甚至 HELP)都会触发 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement。
这不是权限问题,也不是密码错了,而是 MySQL 强制要求你主动确认新密码的有效性。
用哪个 ALTER USER 语句才有效?
别抄旧教程里的 SET PASSWORD 或 UPDATE user —— 在当前主流版本(5.7.6+ / 8.0+)里,只有 ALTER USER 被认可为合法的重置方式,且必须带完整 host 信息或使用 USER() 动态获取当前上下文:
-
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_pass';(推荐,明确指定 host) -
ALTER USER USER() IDENTIFIED BY 'your_new_pass';(通用,自动取当前登录用户和 host) - 避免只写
ALTER USER 'root' IDENTIFIED BY ...—— 缺少 host 会导致语句成功但不生效,下次登录仍报错
密码不符合策略怎么办?
如果执行 ALTER USER 时提示 Your password does not satisfy the current policy requirements,说明启用了 validate_password 插件。临时绕过的方法是:
- 先运行
SET GLOBAL validate_password.policy = LOW;(或= 0) - 再运行
SET GLOBAL validate_password.length = 4;(最小允许长度) - 然后立即执行
ALTER USER ... IDENTIFIED BY '1234' - 注意:这些
SET GLOBAL只在本次会话生效,重启后恢复默认;如需永久关闭,得在my.cnf里加validate_password=OFF
改完密码还是报错?检查这三点
常见漏掉的细节:
- 没执行
FLUSH PRIVILEGES;?其实不用——ALTER USER自带权限刷新,加了反而多余 - 用的是
root但 host 是127.0.0.1?'root'@'localhost'和'root'@'127.0.0.1'是两个不同账户,查SELECT user,host FROM mysql.user;确认实际匹配的那条 - 客户端连的是 socket 还是 TCP?macOS/Linux 下
mysql -u root默认走 socket,对应localhost;加-h 127.0.0.1就走 TCP,对应127.0.0.1—— 密码得设在对应行上
最稳妥的做法:登录后第一件事就是查 SELECT user(), current_user();,看清你到底是哪个用户、哪个 host,再针对性执行 ALTER USER。
相关文章
- 《符文世界:龙之荒野》法老权杖获取方法介绍 07-08
- 《符文世界:龙之荒野》诺金裹尸布获得方法介绍 07-08
- 符文世界:龙之荒野 道顿边地无伤刷蓝龙位置分享 07-08
- 符文世界:龙之荒野沙漠地区材料获得方法介绍 07-08
- 诛仙2玩法是什么 07-08
- 异环伊波恩合伙人行动任务完成指引 07-08