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

这个问题起因是因为网安工具!小皮 !误把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 3716PID 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

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

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


典型错误场景复现

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

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

    • 改用 127.0.0.1

    • 在Advanced中明确指定Socket路径

Thank you for your attention !

你可能感兴趣的:(mysql,数据库,adb)