只有root或具备mysql.user表写权限的账号才能看到phpMyAdmin“编辑权限”按钮;普通账号需用ALTER USER命令改密,且须匹配host、认证插件并同步更新config.inc.php中的密码配置。

phpMyAdmin里点“编辑权限”没反应?先确认你是不是 root 或有全局权限
非 root 账号登录 phpMyAdmin 后,在「用户账户」页看不到「编辑权限」按钮,是正常现象。只有具备 mysql.user 表写权限的账号(比如 root 或带 GRANT OPTION 的账号)才能触发这个界面入口。普通应用账号(如 app_user)即使能进「用户账户」列表,右侧也只会显示「无权限」或干脆没操作列。
如果你点开「用户账户」只看到用户名列表、没有编辑图标,别折腾菜单层级——这不是界面 bug,而是权限限制。此时最直接的办法是切到「SQL」标签页,手写命令改密。
用 SQL 标签页改密码:ALTER USER 是唯一稳态方案
MySQL 8.0+ 已彻底弃用 PASSWORD() 函数和 SET PASSWORD(不带 FOR 的旧写法),硬写会报错 FUNCTION PASSWORD does not exist 或 Unknown column 'password'。必须用 ALTER USER 语法,且必须指定完整 'user'@'host'。
- 改当前登录账号(推荐,不用记用户名):
ALTER USER USER() IDENTIFIED BY '你的新密码'; - 明确改 root(注意 host 匹配):
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; - 如果不确定 host 是什么,先查:
SELECT User, Host FROM mysql.user WHERE User = 'root';
执行后无需手动 FLUSH PRIVILEGES; —— ALTER USER 自动刷新权限。但页面右上角要手动点「刷新」,否则下次登录仍可能缓存旧凭据。
立即学习“PHP免费学习笔记(深入)”;
输完密码登不上?90% 是 host 不匹配或认证插件不兼容
密码改成功了,但用新密码登录 phpMyAdmin 仍报 Access denied for user 'root'@'localhost',问题大概率不在密码本身,而在两个地方:
-
Host字段不一致:MySQL 认证是user@host全匹配。你改的是'root'@'localhost',但 phpMyAdmin 连接时可能用的是'root'@'%'或'root'@'127.0.0.1'。查清楚实际连接用的 host 再对应修改。 - 认证插件冲突:MySQL 8.0 默认用
caching_sha2_password,而老版 phpMyAdmin(如 4.9.x 及更早)不支持,会卡在登录页无反应,或报错The server requested authentication method unknown to the client。临时解决:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
改完密码 phpMyAdmin 还连不上?config.inc.php 必须同步更新
phpMyAdmin 的 config.inc.php 文件里 $cfg['Servers'][$i]['password'] 只控制「自动登录」行为,不是登录页密码。但它一旦填了值,就会覆盖登录页输入——也就是说,如果你在这里写了旧密码,就算你在 MySQL 里把 root 密码改对了,phpMyAdmin 也会拿这个旧值去连,结果还是失败。
所以改密后务必检查并更新该字段:
- 路径通常是
phpmyadmin/config.inc.php(具体看你的部署位置) - 找到类似这行:
$cfg['Servers'][$i]['password'] = '旧密码'; - 改成新密码,保存文件
- 重启 Web 服务(如 Apache)或清空浏览器缓存再试
容易被忽略的是:phpEnv、XAMPP、WAMP 等集成环境自带的 phpMyAdmin,其 config.inc.php 往往是独立配置,不会随 MySQL 密码变更自动同步——这点必须人工干预,不能跳过。



















