phpmyadmin的“change password”仅能修改当前登录用户的密码,且仅兼容mysql_native_password插件;mysql 8.0+默认caching_sha2_password导致失效,应改用alter user或set password语句手动执行。
phpmyadmin 的 “change password” 功能不能直接修改 mysql 用户密码,它只改当前登录用户的密码(即你用哪个账号登录 phpmyadmin,它就改那个账号的密码),且仅在使用 mysql_native_password 认证插件时才生效。
为什么点“Change Password”没反应或报错
常见错误现象:You don’t have the privileges to change the password for this user 或页面刷新后密码没变。这是因为:
- 你当前登录的是一个普通用户(比如
app_user),而 phpMyAdmin 的“Change Password”只允许该用户修改自己的密码,不支持切换目标用户 - MySQL 8.0+ 默认使用
caching_sha2_password插件,但旧版 phpMyAdmin(≤5.2)的“Change Password”表单只生成SET PASSWORD语句,不兼容新插件 - 你的 phpMyAdmin 是通过 HTTP Basic Auth 或 Nginx 身份验证登录的,实际未以 MySQL 用户身份连接,导致无权执行密码修改
实际能改密码的两种可靠方式
别依赖界面上那个按钮,直接动手更稳:
- 用 SQL tab 手动执行
ALTER USER(推荐,MySQL 5.7.6+):ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass123';
注意替换username、localhost和newpass123;如果用户允许远程连接,把localhost换成%或具体 IP - 用 SQL tab 执行
SET PASSWORD(兼容老版本):SET PASSWORD FOR 'username'@'localhost' = PASSWORD('newpass123');注意:MySQL 8.0+ 已移除PASSWORD()函数,此时必须用ALTER USER ... IDENTIFIED BY替代 - 改完记得执行
FLUSH PRIVILEGES;(多数情况不需要,但某些配置下权限缓存不自动刷新)
改完密码后连不上?检查这三点
这是最常被跳过的环节:
- 确认应用连接字符串里的
host和创建用户时的host一致('user'@'127.0.0.1'≠'user'@'localhost',MySQL 把它们当两个不同用户) - 检查 MySQL 是否启用了
skip-name-resolve—— 如果开了,'user'@'%'可能不匹配域名解析后的地址,优先用 IP 形式授权 - phpMyAdmin 自身的连接配置(
config.inc.php中的$cfg['Servers'][$i]['auth_type'])如果是config,它会复用硬编码的账号密码,改了数据库用户密码后,必须同步更新该文件里的$cfg['Servers'][$i]['password']
真正麻烦的从来不是点哪个按钮,而是搞清「你是谁」「你在改谁」「MySQL 认你为谁」——这三个身份对不上,点一百次 Change Password 都没用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











