MySQL 密码正确root无权登录问题

06-02 1554阅读

这个问题起因是因为网安工具!小皮 !误把MySQL配置搞乱了,想着卸载重新安装,但是太暴力了也极麻烦,于是开始了修复MySQL

命令行mysql -u root -p 输入密码:123456 可以正常登录!

BUT !!

DataGrip报错:

[28000][1045] Access denied for user 'root'@'localhost' (using password: YES)

1.首先检查检查防火墙和端口

确保防火墙未阻止3306端口:

# Windows检查端口监听

netstat -ano | findstr :3306

发现:

C:\Users\Administrator>netstat -ano | findstr :3306
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       14796
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       3716
  TCP    0.0.0.0:33060          0.0.0.0:0              LISTENING       14796
  TCP    [::]:3306              [::]:0                 LISTENING       14796
  TCP    [::]:33060             [::]:0                 LISTENING       14796
  TCP    [::1]:3306             [::1]:58757            ESTABLISHED     14796
  TCP    [::1]:58757            [::1]:3306             ESTABLISHED     14128


1.1 问题已明确:存在多个MySQL实例冲突

从排查结果来看,PID 3716 和 PID 14796 均为MySQL服务进程,导致3306端口被重复占用。你当前通过命令行连接时,可能被错误地指向旧实例(PID 3716),而你配置的root@%用户只存在于新实例(PID 14796)中。


1.2 解决方案分步操作

1. 强制终止冲突的MySQL实例
   终止PID为3716的旧实例
 taskkill /F /PID 3716
2. 检查当前MySQL服务状态
   确认剩余MySQL服务
 netstat -ano | findstr :3306

应仅剩PID 14796监听端口。

3. 重新配置root用户权限
   登录新实例(确保使用无密码或正确密码)
  mysql -u root -p
   删除旧权限并重新授权(确保覆盖所有访问场景)
   DROP USER 'root'@'localhost';
   DROP USER 'root'@'%';
   CREATE USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
   CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
   GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
   GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
   FLUSH PRIVILEGES;

这里密码要改为你自己的,主播的是123456

4. 修改my.ini关键配置

我的是在路径:C:\ProgramData\MySQL\MySQL Server 8.0

   [mysqld]
   bind-address = 0.0.0.0  # 允许所有IP连接
   default_authentication_plugin = mysql_native_password  # 全局强制旧插件
5. 重启MySQL服务
   net stop MySQL80
   net start MySQL80

最终连接验证

方法1:使用IP地址连接
mysql -u root -p123456 -h 127.0.0.1 --protocol=TCP
方法2:使用Socket连接
mysql -u root -p123456 --socket="C:/ProgramData/MySQL/MySQL Server 8.0/Data/mysql.sock"

故障树分析

若仍出现 Access denied,按以下顺序排查:

  1. 密码验证

    -- 查看密码哈希值是否已更新
    SELECT user, host, plugin, authentication_string 
    FROM mysql.user 
    WHERE user = 'root';
    • 确认authentication_string字段非空

    • 确认plugin字段为mysql_native_password

    • 日志分析 检查 C:\ProgramData\MySQL\MySQL Server 8.0\Data\DESKTOP-44HK4I5.err,过滤关键词:

      Access denied
      Client does not support authentication protocol
    • 驱动兼容性 在DATAgrip中手动指定驱动版本为 MySQL 8.0.26(与您的服务器版本一致)。


典型错误场景复现

假设你在DATAgrip中使用以下错误配置:

  • Host: localhost (Windows下可能优先尝试Socket连接,而Socket权限未正确配置) 修复方案:

    • 改用 127.0.0.1 或

    • 在Advanced中明确指定Socket路径

      Thank you for your attention !

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码