直接在 phpmyadmin 5.1 的 sql 标签页执行 update 语句最可靠,需更新 mysql.user 表的 authentication_string 字段并显式设置 plugin(如 mysql_native_password 或 caching_sha2_password),最后执行 flush privileges;禁用 password() 函数,改用 sha2('新密码',256) 等兼容方式,并先 select 核查目标用户状态与 host 匹配性。

直接在 phpMyAdmin 5.1 的 SQL 标签页执行 UPDATE 语句最可靠
phpMyAdmin 本身不提供「批量重置用户密码」的图形界面功能,尤其在 5.1 版本中,mysql.user 表的密码字段已从 Password 改为 authentication_string,且默认认证插件是 caching_sha2_password。手动点开每个用户改密码不仅低效,还容易因插件不匹配导致登录失败。
正确做法是切到「SQL」标签页,对 mysql.user 表执行带 WHERE 条件的 UPDATE:
UPDATE mysql.user
SET authentication_string = PASSWORD('新密码'),
plugin = 'mysql_native_password'
WHERE User IN ('user1', 'user2', 'admin_test');
-
PASSWORD()函数在 MySQL 8.0+ 已弃用,但 phpMyAdmin 5.1 通常对接的是 MySQL 5.7 或 MariaDB 10.3+,仍可安全使用;若后端是 MySQL 8.0+,请改用SHA2('新密码', 256)并确保plugin设为caching_sha2_password - 必须显式设置
plugin字段,否则用户可能因认证插件不匹配而无法登录 - 执行后务必点击「刷新」或运行
FLUSH PRIVILEGES;,否则修改不生效
避免用「用户账户」页面批量编辑,它不更新 authentication_string
phpMyAdmin 5.1 的「用户账户」页面(Users tab)点「编辑权限」→「更改密码」看似支持多选,但它底层调用的是旧式 SET PASSWORD 语法,且只写入 authentication_string,不处理 plugin 字段。结果就是:密码看似改了,但用户下次登录报错 Client does not support authentication protocol requested by server。
这个页面适合单个用户微调权限,不适合批量密码操作。
- 勾选多个用户后点「更改密码」,实际只对第一个选中的用户生效
- 输入的密码会被明文拼进 SQL,无加密过程,有审计风险
- 不会自动触发
FLUSH PRIVILEGES,需手动补上
用 SELECT + CONCAT 检查目标用户再执行,防止误改
批量操作前先确认哪些用户真正在 mysql.user 表里、状态是否正常,避免把系统账号(如 mysql.infoschema)或已禁用账号也卷进去。
在 SQL 标签页先运行:
SELECT User, Host, plugin, account_locked
FROM mysql.user
WHERE User IN ('user1', 'user2') AND account_locked = 'N';
- 检查
account_locked值,跳过被锁账号,避免改完也无法登录 - 核对
Host字段,'user1'@'localhost'和'user1'@'%'是两个独立账号 - 如果要按模式匹配(如所有以
app_开头的用户),用LIKE 'app_%'替代IN
改完密码后,立刻测试一个最小权限账号连接
别等全部改完再验证。选一个非关键、权限最小的测试账号(比如 test_readonly),用命令行或另一个 phpMyAdmin 实例立刻连一次:
mysql -u test_readonly -p -h your-host
如果失败,立刻查错误日志:Authentication plugin 'caching_sha2_password' cannot be loaded 就说明 plugin 没设对;Access denied 则可能是 authentication_string 加密方式不匹配。
- MySQL 5.7 默认用
mysql_native_password,MySQL 8.0 默认用caching_sha2_password,服务端版本决定你该用哪种plugin - phpMyAdmin 自身连接用的账号不受影响,但其他应用(如 PHP 的
mysqli连接)可能需要加mysqli_options($conn, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false)才能连caching_sha2_password用户
批量改密码这件事,核心不是“怎么点”,而是“哪张表、哪个字段、哪个插件、要不要刷权限”。漏掉任意一环,都会让密码看起来改了,实际登不上。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











