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 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,按以下顺序排查:
-
密码验证
-- 查看密码哈希值是否已更新 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 !
-