phpMyAdmin 不支持图形化设置密码过期策略,需通过 SQL 执行 ALTER USER 命令或修改 my.cnf 中 default_password_lifetime;其权限界面不控制 password_expired 字段,验证须查 mysql.user 表。
phpmyadmin 本身不提供图形化界面来设置 mysql 用户密码过期策略,它只是个管理前端;真正生效的是 mysql 原生的 alter user 语法和全局变量 default_password_lifetime。你得在 phpmyadmin 的 sql 标签页里手动执行命令,或者改配置文件。
用 phpMyAdmin 执行 ALTER USER 设置单个用户过期
这是最常用、最可控的方式。进入 phpMyAdmin → 左侧选中对应数据库(或直接点顶部「SQL」标签),粘贴并运行:
ALTER USER 'username'@'host' PASSWORD EXPIRE;
这条命令会让用户下次登录时强制改密;如果想设为“永不过期”,则用:
ALTER USER 'username'@'host' PASSWORD EXPIRE NEVER;
-
PASSWORD EXPIRE等价于PASSWORD EXPIRE DEFAULT,走全局策略 -
host必须和mysql.user表里记录的完全一致(比如'user'@'192.168.1.100'不能写成'user'@'%') - 执行后不会立即断开已存在的连接,只影响下一次认证
- 若用户当前密码已过期,但没重置,
SHOW DATABASES等操作会报错:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
通过 phpMyAdmin 修改 my.cnf 并重启生效全局策略
phpMyAdmin 无法直接改 MySQL 配置文件,但你可以先用它查出当前值,再人工编辑服务器上的 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf:
SELECT @@global.default_password_lifetime;
然后在 [mysqld] 段落下添加或修改:
立即学习“PHP免费学习笔记(深入)”;
default_password_lifetime = 90
- 设为
0表示所有新用户默认永不过期(MySQL 5.7.4+ 支持) - 设为
90表示默认 90 天后强制改密 - 该值不影响已存在用户的
password_expired状态,只对后续新建用户生效 - 改完必须重启 MySQL 服务:
sudo systemctl restart mysql(Debian/Ubuntu)或sudo systemctl restart mysqld(RHEL/CentOS)
为什么在 phpMyAdmin 里点“编辑权限”找不到密码过期选项
因为 phpMyAdmin 的用户权限管理界面(「权限」→「编辑权限」)只操作 GRANT 权限,不触碰用户账户元数据。密码过期属于账户生命周期属性,存储在 mysql.user 表的 password_expired 字段,而该字段不在权限勾选框范围内。
- 你在这里勾选
SELECT或REPLICATION SLAVE,和密码是否过期完全无关 - 试图用「全选权限」代替
ALTER USER是无效的 - 如果误以为点了「执行」就完成了过期设置,实际什么都没发生
- 验证是否生效:运行
SELECT user, host, password_expired FROM mysql.user WHERE user = 'username';
最容易被忽略的一点是:MySQL 8.0+ 默认启用 default_password_lifetime = 360,这意味着所有新创建的用户(包括你在 phpMyAdmin 里点「添加用户」建的)都会在 360 天后自动过期——除非你显式加了 PASSWORD EXPIRE NEVER 或全局关掉它。别等用户报错才想起来查。



















