
本文详解如何解决 phpmyadmin 中 root 用户登录失败(error 1045)的问题,通过重置 mysql root 密码、在 phpmyadmin 界面中安全设置密码,并同步更新配置文件,实现可靠的身份验证。
本文详解如何解决 phpmyadmin 中 root 用户登录失败(error 1045)的问题,通过重置 mysql root 密码、在 phpmyadmin 界面中安全设置密码,并同步更新配置文件,实现可靠的身份验证。
当在 phpMyAdmin 中遇到 Access denied for user 'root'@'localhost' (using password: YES) 错误时,本质是 MySQL 服务端拒绝了当前凭据认证——这通常意味着:MySQL 的 root 用户实际未设置密码、密码已变更但 config.inc.php 未同步,或认证插件/权限限制导致传统密码登录失效(尤其在 MySQL 5.7+ 或 MariaDB 10.4+ 中常见)。直接修改 config.inc.php 中的密码字段无法修复底层数据库凭证不一致问题,必须从 MySQL 实例本身入手。
✅ 正确修复流程(推荐 Web 界面方式,无需停服)
⚠️ 前提:你当前可通过无密码方式(如
sudo mysql -u root)或已有管理员权限进入 MySQL;若完全无法登录,请先使用系统级重置(见文末备注)。
-
临时允许空密码登录
编辑config.inc.php,将 root 密码清空,并确保禁用密码强制要求:$cfg['Servers'][$i]['password'] = ''; // 清空密码 $cfg['Servers'][$i]['AllowNoPassword'] = true; // 允许空密码登录
保存后访问
http://localhost/phpmyadmin,尝试不输入密码直接登录(此时依赖 MySQL 的本地 socket 认证,常可绕过密码限制)。 通过 phpMyAdmin 界面重置 root 密码
登录成功后,点击顶部导航栏 “用户账户” → 找到root@localhost行 → 点击 “编辑权限” → 滚动到底部,点击 “更改密码” → 选择 “密码” 类型,输入新密码(如123),勾选 “重新加载权限” → 点击 “执行”。-
同步更新配置文件
将新设密码写入config.inc.php:$cfg['Servers'][$i]['password'] = '123'; // 替换为你的强密码 $cfg['Servers'][$i]['AllowNoPassword'] = false; // 安全起见,禁用空密码
重启 Web 服务器(如
sudo systemctl restart apache2或sudo service nginx reload)以确保配置生效。立即学习“PHP免费学习笔记(深入)”;
验证登录
再次访问 phpMyAdmin,使用root+ 新密码登录,应可成功进入。
? 安全注意事项
- ❌ 切勿在生产环境使用简单密码(如
123);建议使用 12 位以上含大小写字母、数字、符号的组合。 - ✅
auth_type = 'cookie'是推荐方式,它通过加密 Cookie 传递凭证,比config模式更安全(后者会明文暴露密码在 PHP 文件中)。 - ? 若步骤 1 无法空密码登录,请检查 MySQL 认证插件:执行
SELECT User, Host, plugin FROM mysql.user WHERE User='root';。若plugin为auth_socket(Ubuntu 默认),需先执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password'; FLUSH PRIVILEGES;
- ? 配置文件中
$i应为有效的服务器索引(通常为1),完整配置段示例如下:$i++; $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'your_strong_password'; $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['AllowNoPassword'] = false;
通过以上步骤,你不仅恢复了 root 访问能力,还建立了符合现代 MySQL 安全规范的认证链路。记住:phpMyAdmin 只是管理界面,真正的凭证始终由 MySQL 服务端控制——任何配置调整都必须与数据库状态保持一致。



















