phpMyAdmin 4.x 的用户账户管理界面不支持切换密码加密方式,仅能输入新密码并提交,实际加密方式由 MySQL 服务端决定;如需指定 mysql_native_password,须手动执行 ALTER USER ... IDENTIFIED WITH 语句。
phpMyAdmin 4.x 不提供密码加密方式切换界面
直接说结论:phpmyadmin 4.x 的「用户账户」管理面板(即 user accounts 标签页)**根本不允许你选择或修改 mysql 用户的密码加密方式**。它只提供「输入新密码 → 点击执行」的流程,背后用的是 mysql 当前默认的认证插件和哈希逻辑,你无法在界面上指定用 mysql_native_password 还是 caching_sha2_password。
实际生效的密码加密方式由 MySQL 服务端决定
phpMyAdmin 本身不参与密码哈希计算,它只是把你在表单里填的密码,原样传给 MySQL 执行类似 SET PASSWORD 或 ALTER USER ... IDENTIFIED BY 的语句。最终用哪种方式加密,取决于:
- MySQL 版本(5.7 默认用
mysql_native_password,8.0+ 默认用caching_sha2_password) - 该用户的
plugin字段值(查mysql.user表的plugin列) - 是否显式指定了
IDENTIFIED WITH子句
比如你在 phpMyAdmin 里改密码,如果底层 MySQL 是 8.0 且用户 plugin 是 caching_sha2_password,那新密码就一定会被 SHA256 加密;你没法在界面上绕过它。
想强制指定加密方式?必须绕过 phpMyAdmin 手动执行 SQL
如果你需要让某个用户使用 mysql_native_password(例如适配老版本 PHP 的 mysqli 扩展),只能在 phpMyAdmin 的 SQL 标签页中手动运行:
ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'new_password';
注意三点:
-
username和host必须和mysql.user表里完全一致(包括'%'或'localhost') - 执行后要立刻
FLUSH PRIVILEGES;(部分 MySQL 8.0+ 版本可省略,但加了更稳妥) - 如果用户不存在,得先用
CREATE USER,不能只靠ALTER USER
改完之后 phpMyAdmin 可能显示异常或报错
phpMyAdmin 4.x 对 caching_sha2_password 支持有限。即使你手动切回 mysql_native_password,它的用户列表有时仍会错误显示该用户为「无密码」或「密码类型未知」——这不是数据错了,是它的前端解析逻辑没适配 plugin 字段变化。别信界面上的「密码类型」列,以 SELECT User,Host,plugin FROM mysql.user; 的结果为准。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











