Mysql系列---【hyper-v中的centos7的docker创建的mysql8,idea中的springboot项目无法连接】

1.问题

hyper-v中的centos7的docker创建的mysql8,dbeaver可以正常连接,但是同样的配置,idea中的springboot项目无法连接,报下面的错误:

java.sql.SQLException: Access denied for user 'root'@'192.168.137.1' (using password: YES)

2.分析

为什么 DBeaver 可以,IDEA 项目不行?

  • DBeaver:在连接时会自动检测服务器版本并提示你下载匹配的驱动(通常是最新版),它能自动处理 caching_sha2_password。

  • IDEA 项目:依赖于你 pom.xml 中定义的驱动版本。如果驱动版本太低(比如 5.1.x),它完全无法识别 MySQL 8.0 的加密方式。

核心原因

这是典型的 MySQL 权限限制 问题。

宿主机 IP 识别:你的 Windows 宿主机(运行 IDEA 的地方)在 Hyper-V 内部网络中的 IP 是 192.168.137.1。

拒绝连接:MySQL 中的 root 用户目前可能只允许 localhost 或者特定的 IP 连接,而不允许来自 192.168.137.1 的连接。

为什么 DBeaver 能连? 可能是因为你在 DBeaver 中使用了 SSH 隧道,或者 DBeaver 使用了不同的配置(比如特定的用户),而 Spring Boot 严格按照 root 账户去请求。

3.解决方案

使用docker登录mysql,或者直接用dbeaver连接,打开sql窗口执行

-- 切换到 mysql 系统库
USE mysql;

-- 查看当前 root 用户的允许连接主机
SELECT user, host FROM user WHERE user = 'root';

-- 如果 root 的 host 是 localhost,则需要修改为 % (代表允许所有远程连接)
-- 或者修改为你报错信息里的特定 IP '192.168.137.1'
UPDATE user SET host = '%' WHERE user = 'root' AND host = 'localhost';

-- 1. 修改远程连接的 root 密码和插件
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678';

-- 2. 修改本地连接的 root 密码和插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';

-- 3. 刷新权限
FLUSH PRIVILEGES;

posted on 2026-01-13 15:33  少年攻城狮  阅读(1)  评论(0)    收藏  举报

导航