phpMyAdmin 不记录也不显示密码修改时间;MySQL 5.7+ 仅对原生认证插件用户在启用密码过期策略时通过 password_last_changed 字段记录,需手动查询且 phpMyAdmin 默认不展示,MariaDB 及低版本 MySQL 完全不支持该字段。

phpMyAdmin 本身不记录密码修改时间
phpMyAdmin 是一个数据库管理界面,它不保存、不跟踪、也不显示用户密码的修改历史。MySQL / MariaDB 的 mysql.user 表里没有 password_last_changed 或类似字段(旧版本完全不存),即使在 MySQL 5.7+ 中启用了密码过期策略,也**仅对内置认证插件(如 mysql_native_password)生效**,且该时间戳存在 mysql.user.password_last_changed 字段中——但 phpMyAdmin 默认不展示这个字段。
MySQL 5.7+ 可查 password_last_changed 字段(需手动查询)
如果你用的是 MySQL 5.7 或更新版本,并且用户使用的是原生密码插件(不是 caching_sha2_password 或外部认证),可以手动执行 SQL 查询:
SELECT User, Host, password_last_changed FROM mysql.user WHERE User = 'your_username';
注意以下几点:
-
password_last_changed为NULL表示该用户从未设置过密码过期策略,或密码是通过SET PASSWORD以外方式(如直接 UPDATE 表)修改的 - 该字段只在启用
default_password_lifetime或显式执行ALTER USER ... PASSWORD EXPIRE后才被更新 - phpMyAdmin 的「用户账户」页面默认不显示
password_last_changed列,必须进「SQL」标签页手写查询 - 查询前需有
SELECT权限访问mysql.user表(通常只有 root 或高权限用户能查)
MariaDB 和低版本 MySQL 完全没有该字段
MariaDB(包括 10.4/10.5/10.6)以及 MySQL 5.6 及更早版本的 mysql.user 表中,压根没有 password_last_changed 字段。你无法从数据库层面得知密码修改时间,除非:
立即学习“PHP免费学习笔记(深入)”;
- 你主动在修改密码时往自定义日志表里插入记录
- 数据库启用了通用查询日志(
general_log),并从中人工检索SET PASSWORD或ALTER USER语句(不推荐,日志量大且含敏感信息) - 依赖操作系统级审计(如 auditd)或中间件层日志(如代理或应用层密码重置接口)
phpMyAdmin 界面里点不到“密码修改时间”
在 phpMyAdmin 的「用户账户」列表页,你能看到的只有 User、Host、Authentication plugin、Password(掩码为 *****)、Global privileges 等基础字段。点击编辑用户,也只能改密码、权限、资源限制等,没有任何时间戳相关控件或显示区域。
别试图在「结构」或「浏览」里找隐藏列——password_last_changed 不在 phpMyAdmin 的默认列白名单中,也不会被自动加载。强行想让它显示?得改 phpMyAdmin 源码里的 user_accounts.lib.php 和模板,这已超出常规运维范畴。
真正能落地的做法就两个:要么确认 MySQL 版本并手查 password_last_changed,要么接受“数据库本身不记这个时间”这个事实,从日志或流程上补位。



















