XAMPP中MySQL root密码为空是默认状态,必须修改且需同步更新phpMyAdmin/config.inc.php、WordPress/wp-config.php等配置文件,并在MySQL 8.0+中用ALTER USER配合FLUSH PRIVILEGES生效。

MySQL root 密码为空是 XAMPP 默认状态,不改等于把数据库钥匙挂在门口——必须改,且不能只改一半。
用 phpMyAdmin 改密码最简单,但仅改界面不改配置会连不上
这是新手最常踩的坑:在 http://localhost/phpmyadmin →「用户账户」里给 root@localhost 设置了新密码,点「执行」后以为完事了。结果 WordPress 打不开、phpMyAdmin 自己也报错 #1045 - Access denied。
- 必须同步修改两个地方:
phpMyAdmin/config.inc.php和 WordPress 的wp-config.php(如果用了 WP) - 打开
phpMyAdmin/config.inc.php,找到类似这三行:$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = ''; $cfg['Servers'][$i]['auth_type'] = 'cookie';
把第二行单引号中间填上你设的新密码,比如'123Abc!' - 如果运行 WordPress,还要打开
htdocs/wp-config.php,更新DB_PASSWORD常量值 - 改完记得重启 Apache,否则配置不生效
命令行改密码更可靠,但 MySQL 8.0+ 必须用 ALTER USER
直接进 MySQL 命令行改,绕过 phpMyAdmin 的 UI 层级限制,适合确认权限系统是否正常。注意:XAMPP 当前主流版本(2026 年)已默认搭载 MySQL 8.0+,SET PASSWORD 和 UPDATE mysql.user 会失败或被忽略。
- 先用 XAMPP 控制面板启动 MySQL,然后点 Shell 按钮打开终端
- 执行登录:
mysql -u root -p,回车后直接按回车(空密码) - 执行密码更新(关键!区分插件类型):
SELECT plugin FROM mysql.user WHERE User = 'root' AND Host = 'localhost';
若返回caching_sha2_password(MySQL 8.0 默认),运行:ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的新密码';
若返回mysql_native_password,则用:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
- 务必加
FLUSH PRIVILEGES;,否则重启后失效
resetroot.bat 在 XAMPP 8.0+ 中已失效,别白试
很多老教程说双击 XAMPP\mysql\resetroot.bat 就能重置,现在它只是个空壳脚本或报错退出。原因很直接:MySQL 8.0 强制要求认证插件声明,而该脚本仍尝试用旧式 UPDATE 语句写入 authentication_string 字段,字段结构和校验逻辑已变。
- 遇到
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'或ERROR 1396 (HY000): Operation ALTER USER failed,就是这个原因 - 不要试图编辑
resetroot.bat加--skip-grant-tables—— Windows 下 mysqld 会拒绝在已有配置加载前提下跳过权限表 - 真忘密码,必须手动停服务 → 命令行启安全模式 → 登录改 → 刷新权限 → 正常重启(步骤见知识库首条)
改完密码只是第一步,暴露在外的 phpMyAdmin 必须锁住
设了 root 密码,但 http://localhost/phpmyadmin 还是裸奔访问,等同于装了防盗门却把钥匙插在锁眼里。尤其当你开了端口映射或共享本地网络,风险陡增。
- 访问
http://localhost/security/,点「xamppsecurity.php」进入向导,它会自动检测并引导你设置 phpMyAdmin 访问密码(不是 MySQL 密码) - 该向导生成的 .htaccess 文件会限制 phpMyAdmin 目录仅允许输入用户名密码后访问,底层靠 Apache 的
mod_auth_basic - 如果该页面提示「Security settings are not available」,说明
httpd-xampp.conf里禁用了 security 目录,需手动检查Alias /security配置是否被注释 - 额外建议:把
phpmyadmin目录名改成随机字符串(如pma_8x2k),并同步更新httpd-xampp.conf中对应Alias和Directory路径
真正容易被忽略的是:改完 root 密码后,所有依赖 MySQL 的本地应用(WordPress、Drupal、自写脚本)都得同步更新连接凭据;而 phpMyAdmin 的访问控制是独立于 MySQL 认证的另一层防护,两者缺一不可。漏掉任一环节,安全性就断了一截。


















