phpmyadmin界面“更改密码”在mysql 8.0+下常失效,因默认插件caching_sha2_password不兼容旧逻辑;须先查user表plugin字段,选“编辑权限”并手动指定认证插件,再执行alter user语句,同时确保host匹配且同步更新config.inc.php配置。
不能直接点“更改密码”就生效,尤其在 mysql 8.0+ 下——界面默认用旧逻辑生成 set password,而该语句不兼容 caching_sha2_password 插件,改完登录仍报 access denied。
先确认目标用户的认证插件类型
phpMyAdmin 界面改密码是否有效,取决于用户当前用的认证插件。MySQL 8.0 默认是 caching_sha2_password,但旧版 phpMyAdmin(≤5.2)的“更改密码”表单不识别它。
- 进 phpMyAdmin → 左侧点
mysql库 → 打开user表 → 找到目标行,看plugin字段值 - 如果是
caching_sha2_password:别手动改authentication_string,也别依赖界面上的“更改密码”按钮 - 如果是
mysql_native_password:界面改密码才可能生效(但仍需配合FLUSH PRIVILEGES)
用“编辑权限”页面绕过插件限制
phpMyAdmin 的“编辑权限”页比“更改密码”按钮更底层,能显式选择认证方式,适合 MySQL 8.0+ 用户。
- 点击顶部“用户账户” → 找到目标用户 → 点“编辑权限”
- 滚动到底部“更改密码”区域,**不要点“生成”**,直接输入两次新密码
- 关键一步:展开“密码哈希方法”下拉菜单,选
mysql_native_password或caching_sha2_password(必须和你希望客户端支持的协议一致) - 点击“执行”——此时 phpMyAdmin 会自动调用
ALTER USER ... IDENTIFIED WITH ... BY ...,而非过时的SET PASSWORD
改完必须检查 host 是否匹配应用连接配置
密码改对了却连不上?90% 是因为 'user'@'localhost' 和 'user'@'127.0.0.1' 被 MySQL 当作两个用户,而你的应用连的是后者。
- 执行
SELECT User, Host FROM mysql.user WHERE User = 'username';查清实际存在的记录 - 确认应用连接字符串里的
host值(如127.0.0.1、localhost或%),和你执行ALTER USER时写的 host 完全一致 - 如果应用用的是
127.0.0.1,但你只改了'username'@'localhost',那新密码对它无效
phpMyAdmin 自身登录失败?同步更新 config.inc.php
你改的是数据库用户密码,但 phpMyAdmin 连数据库用的是自己配置文件里硬编码的账号密码,二者不同步就会登不进 phpMyAdmin。
- 打开 phpMyAdmin 安装目录下的
config.inc.php - 找到类似
$cfg['Servers'][$i]['password'] = '';的行,把空字符串换成你刚设的新密码 - 保存后重启 Web 服务(Apache/Nginx)和 MySQL 服务,否则配置不加载
真正卡住人的从来不是“怎么点”,而是没意识到 MySQL 把 localhost 和 127.0.0.1 当两个用户、没查 plugin 就乱点“生成”、改完数据库密码却忘了更新 phpMyAdmin 自己的配置文件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











