You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

phpMyAdmin root密码重置后仍出现#1045登录错误求助

解决phpMyAdmin重置root密码后仍提示#1045访问拒绝的问题

嘿,我之前也踩过这个坑!重置root密码后还是跳出#1045 - access denied for user 'root'@'localhost' (using password yes)的错误,大概率是这几个原因,你可以挨个排查:

  • 密码重置没覆盖到对应的主机用户
    MySQL的用户权限是和主机绑定的,root@localhostroot@127.0.0.1甚至root@::1(IPv6环境)都是独立的用户账号。你重置密码的时候可能只修改了其中一个,但phpMyAdmin实际连接的是另一个。
    解决步骤:

    1. 用跳过权限验证的方式登录MySQL命令行(比如Linux下sudo mysqld_safe --skip-grant-tables &,Windows下在my.ini里加skip-grant-tables然后重启服务)
    2. 执行SQL查看所有root用户:
      SELECT user, host FROM mysql.user WHERE user = 'root';
      
    3. 给每个root用户都重置密码:
      ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
      ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '你的新密码';
      ALTER USER 'root'@'::1' IDENTIFIED BY '你的新密码'; -- 存在的话才执行
      FLUSH PRIVILEGES;
      
    4. 重启MySQL服务,再尝试登录。
  • phpMyAdmin配置文件还在用旧密码
    如果你之前为了方便,在phpMyAdmin的config.inc.php里硬编码过root密码,那就算你改了MySQL里的密码,phpMyAdmin还是会用旧密码去连接。
    解决办法:
    找到phpMyAdmin安装目录下的config.inc.php,找到类似这样的行:

    $cfg['Servers'][$i]['password'] = '旧密码内容';
    

    把它改成你的新密码,或者直接注释掉这行(前面加//),这样每次登录phpMyAdmin时就会让你手动输入密码。改完记得重启你的web服务器(Apache/Nginx之类的)。

  • MySQL权限缓存没刷新
    有时候就算你执行了FLUSH PRIVILEGES,MySQL的权限缓存可能还是没更新,尤其是Windows系统或者某些旧版本的MySQL。
    解决办法:直接重启MySQL服务——Linux下用sudo systemctl restart mysql,Windows去服务管理器里找到MySQL服务右键重启。

  • 密码包含特殊字符导致识别错误
    如果你的新密码里有#$\这类特殊字符,不管是在phpMyAdmin登录框输入,还是写在配置文件里,都可能被转义或者识别成其他内容。
    解决办法:先换一个纯字母数字的简单密码试试,如果能成功登录,再逐步添加特殊字符;如果要在配置文件里用特殊字符,记得给它们加转义(比如\$)。

内容的提问来源于stack exchange,提问作者Ahmed Elsayed

火山引擎 最新活动