xampp默认mysql root密码为空,新版phpmyadmin拒绝空密码提交导致登录失败;必须以--skip-grant-tables模式重置密码,并同步修改config.inc.php中auth_type为'cookie'、清除硬编码凭证,重启服务后验证。

XAMPP 默认 MySQL root 密码为空,但新版 phpMyAdmin 拒绝空密码提交,直接导致登录失败;这不是界面 bug,而是 MySQL 权限系统与 phpMyAdmin 认证方式不匹配造成的硬性拦截。必须同步修改数据库凭证和配置文件,缺一不可。
MySQL 命令行改 root 密码总报 #1045 – Access denied
这不是输错密码,是 XAMPP 启动时 root 确实没设密码,但 mysql -u root -p 命令强制要求输入密码字段,形成“要密码却没密码”的死锁。
- 先在 XAMPP 控制面板中彻底停止 MySQL 服务
- Windows:以管理员身份打开 CMD,
cd C:\xampp\mysql\bin\(路径按你实际安装位置调整),执行:mysqld --skip-grant-tables --bind-address=127.0.0.1 --console - macOS/Linux:终端执行:
sudo /opt/lampp/sbin/mysqld --skip-grant-tables - 另开一个终端窗口,运行:
mysql -u root(不加-p),直连成功后立即执行:FLUSH PRIVILEGES;和ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; - 关闭第一个终端中的
mysqld进程(Ctrl+C 或任务管理器结束),再通过 XAMPP 正常启动 MySQL
phpMyAdmin 登录页不显示,或提示 Cannot log in to the MySQL server
前者说明 config.inc.php 里认证类型被设为 'config',后者说明新密码没同步进配置,或 MySQL 没真正接受该密码。
- 编辑
C:\xampp\phpMyAdmin\config.inc.php(Windows)或/opt/lampp/phpmyadmin/config.inc.php(macOS/Linux) - 找到
$cfg['Servers'][$i]['auth_type'],确保值为'cookie'(不是'config') - 删掉或注释掉这两行(如果存在):
$cfg['Servers'][$i]['user'] = 'root';和$cfg['Servers'][$i]['password'] = ''; - 确认
$cfg['Servers'][$i]['AllowNoPassword']是false(设为true会绕过密码校验,但新版 phpMyAdmin 已不支持空密码提交) - 保存后重启 Apache,清空浏览器中
phpmyadmin相关 cookie,或用隐身窗口访问
用 phpMyAdmin 界面改密码后仍连不上
phpMyAdmin 的「用户账户」页面点「更改密码」看似方便,但它可能只更新了部分权限字段,且不触发 MySQL 8+ 的 authentication_string 字段刷新,导致密码实际未生效。
- 不要依赖界面操作修改
root密码,尤其 MySQL 8.0.29+ 版本已移除PASSWORD()函数 - 若已误操作,可临时用命令行直连后执行:
USE mysql; UPDATE user SET authentication_string = '' WHERE User = 'root' AND Host = 'localhost'; FLUSH PRIVILEGES;回退到空密码状态再重来 - 验证是否真生效:
mysql -u root -p输入新密码,能进入命令行才算成功 - 注意
$cfg['Servers'][$i]['host']必须是'localhost',不是'127.0.0.1'—— MySQL 对这两个 host 的权限记录是分开存的
最容易被忽略的是:改完密码后没关干净旧 mysqld 进程,或没带 --console 参数导致跳过权限模式根本没启动成功;还有人把 auth_type 设成 'config' 却忘了填密码,结果 phpMyAdmin 尝试用空密码连接,MySQL 拒绝——它不是不认密码,是压根没收到密码字段。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











