phpMyAdmin不提供root密码修改入口,仅当登录账号为拥有GRANT OPTION的MySQL root时才显示“编辑权限”按钮;即使可见,MySQL 8.0+下该操作常因废弃语法、host不匹配或认证插件冲突而失效,可靠方式是命令行跳过授权表重置密码并同步更新config.inc.php配置。
phpMyAdmin 根本不提供 root 密码修改入口
你点开“用户账户”页面,看到的 root 用户条目只是只读展示——除非当前登录账号是 mysql 的 root 且拥有 grant option 权限,否则根本不会显示“编辑权限”按钮。phpmyadmin 的界面逻辑是:它只允许你修改自己有权限操作的用户记录,而普通账号(包括非 root 的管理员)默认无权写入 mysql.user 表。这不是 bug,是 mysql 权限模型的自然体现。
即使看到“编辑权限”,改的也不是 root 密码
哪怕你用 root 登录了 phpMyAdmin,“用户账户”页里点 root 对应的“编辑权限”,页面滚动到最下方出现“更改密码”输入框,也请停下——这个操作在 MySQL 8.0+ 中大概率无效。原因有二:
- phpMyAdmin 旧版(尤其 ≤ 5.2)提交时仍尝试用已废弃的
SET PASSWORD或直接UPDATE mysql.user,MySQL 8.0+ 会静默拒绝或报错ERROR 1064 (42000) - 它不校验
host匹配:你看到的是root@localhost,但实际生效的可能是root@127.0.0.1或root@::1,三者互不等价;界面不会提示你选 host,改完可能新建一个用户而非覆盖原用户
真正能改 root 密码的只有命令行 + --skip-grant-tables
当你连 root 都登不进 MySQL,phpMyAdmin 就彻底失效——它连数据库都连不上,页面直接报 #1045 Cannot log in to the MySQL server。唯一可靠路径是绕过权限系统启动 mysqld:
- 停服务:
sudo systemctl stop mysql(Ubuntu/Debian)或sudo brew services stop mysql(macOS) - 跳过授权表启动(加
--skip-networking防未授权访问):sudo mysqld --skip-grant-tables --skip-networking --socket=/tmp/mysql-reset.sock & - 无密码连接:
mysql -u root --socket=/tmp/mysql-reset.sock - 强制重置(MySQL 8.0+ 必须指定插件):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; - 刷新权限:
FLUSH PRIVILEGES;
注意:如果 SELECT plugin FROM mysql.user WHERE User='root' 返回 caching_sha2_password,而你的 phpMyAdmin 版本老(≤ 5.0),必须切回 mysql_native_password,否则仍连不上。
改完密码 phpMyAdmin 还登不上?查 config.inc.php
MySQL root 密码改成功了,但 phpMyAdmin 页面还是报错,90% 是因为它的配置文件里还存着旧凭据。打开 /etc/phpmyadmin/config.inc.php 或 /usr/share/phpmyadmin/config.inc.php,搜 $cfg['Servers'][$i]['password'],把值替换成你刚设的新密码。别漏掉 libraries/config.default.php(某些旧部署需要同步改这里)。改完重启 Web 服务:sudo systemctl restart apache2 或 sudo systemctl restart nginx。
真正容易被忽略的不是步骤,而是 host 和 plugin 的精确匹配——'root'@'localhost' 和 'root'@'127.0.0.1' 是两个用户,caching_sha2_password 和 mysql_native_password 是两种认证协议,差一点就白忙活。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











