这不是密码输错,而是MySQL主动拒绝旧密码登录;需重置密码或禁用过期策略,否则所有客户端均无法连接。

直接告诉你结论:这不是密码输错了,是 MySQL 主动拒绝你用旧密码登录,必须重置密码或禁用过期策略,否则任何应用、命令行、GUI 工具都连不上。
ERROR 1862 提示“Your password has expired”怎么快速登录并修复
这个错误意味着服务端已判定该账户密码过期,但你还能用 mysql -u root -p 登录(5.7)或完全连不上(8.0+)。关键看客户端是否支持交互式改密流程:
- 优先用
mysqlsh或 ≥5.7.11 的mysql客户端:输入旧密码后会自动弹出新密码输入提示,改完立刻生效 - 如果用的是旧版
mysql(如 5.6)、Navicat 旧版、DBeaver 默认配置,它不发“密码更新请求”,直接报错退出 - Windows 用户可尝试用 MySQL 安装目录下的命令行工具(如
mysql.exe),它常带新版协议支持 - 若已能登录(比如用 root 登进去了),别碰
SET PASSWORD—— 在 8.0+ 上它不重置password_expired标志,必须用ALTER USER
ALTER USER 执行后仍报 ERROR 1820 怎么办
说明你执行了 ALTER USER 'user'@'host' PASSWORD EXPIRE; 或类似操作,把用户主动设为“立即过期”。此时账户进入只允许改密的沙箱模式,其他语句全被拦截:
需要创建、读取、编辑或处理 Word 文档(.docx / .dotx)时使用。触发词:'Word'、'word 文档'、'.docx'、'生成报告'、'制作合同/简历/方案/说明书'、'提取 word 内容'、'在文档里查找替换'、'给文档加页眉页脚/目录/表格'。也用于把任意内容排版成一份正式的 Word 文件。不要用它处理 PDF、Excel 或无关编程任务。中文创作场景尤其适合:小说大纲稿、投稿文档、合同、简历、工作总结。
- 登录后第一件事只能是
ALTER USER 'user'@'host' IDENTIFIED BY 'newpass';,不能先SELECT、不能先USE -
IDENTIFIED BY是唯一能同时更新密码哈希和清除password_expired='Y'的方式 - 如果想一劳永逸,补一句
ALTER USER 'user'@'host' PASSWORD EXPIRE NEVER; - 验证是否生效:
SELECT User, Host, password_expired FROM mysql.user WHERE User = 'user';,确认值是N
连 mysql -u root -p 都进不去怎么办
这是最紧急情况:所有客户端都无法触发交互式改密,又没其他未过期管理员账号。只能临时绕过权限系统:
- 编辑
my.cnf(Linux/macOS)或my.ini(Windows),在[mysqld]下加一行:skip-grant-tables - 重启 MySQL(
systemctl restart mysqld或 Windows 服务管理器) - 此时可无密码登录:
mysql -u root,然后执行:ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass'; - 删掉
skip-grant-tables行,再重启服务 —— 这步漏掉会导致数据库裸奔 - 注意:
UPDATE mysql.user SET authentication_string = ...在 8.0+ 不安全且可能失败,别手痒去改表
最容易被忽略的一点:default_password_lifetime = 0 是全局设置,但不会 retroactively 清除已有用户的 password_expired='Y' 状态。也就是说,即使你设了全局永不过期,已经过期的账号仍需单独执行 ALTER USER ... PASSWORD EXPIRE NEVER 才能恢复。别以为改了配置就万事大吉。










