数据库连接报错问题

你提供的日志信息非常关键。这展示了应用程序的启动过程。

结合你之前的报错(Public Key Retrieval is not allowed)和这个启动日志,我们可以得出一个明确的结论:

🛑 现状分析

你的应用启动失败了。

虽然日志最后显示了 Tomcat started on port(s): 28089 和 Started NewBeeMallApplication,但这通常只是 Spring Boot 容器本身的启动日志。根据你之前的报错,当浏览器尝试访问首页(IndexController)并加载分类数据时,程序会因为数据库连接失败而抛出异常,导致网页无法正常显示。

🔍 关键证据:驱动版本

在你的启动日志(长命令行部分)中,有一段非常重要的信息:

com\mysql\mysql-connector-j\8.0.31\...

这说明你使用的是 MySQL 8.x 的驱动程序 。正如之前分析的,MySQL 8 默认使用 caching_sha2_password 认证插件,而你的数据库用户(很可能是 root)目前的配置与该插件不兼容。


💡 最终解决方案

你需要在 MySQL 数据库端 执行 SQL 命令来解决问题。

请按照以下步骤操作:

第一步:登录 MySQL

打开命令行(CMD)或数据库管理工具(如 Navicat、DBeaver),使用你的用户名(通常是 root)和密码登录 MySQL。

第二步:执行修改命令

请将下面的 SQL 命令中的 your_password 替换成你实际的数据库密码,然后执行:

复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
  • 解释 :这条命令的作用是强制 root 用户使用旧版的、兼容性更好的密码验证方式,而不是 MySQL 8 默认的、容易出问题的新方式。
第三步:刷新权限

执行完上面的命令后,紧接着执行:

复制代码
FLUSH PRIVILEGES;
第四步:重启应用
  1. 回到你的 IDEA 或命令行,按 Ctrl+C 停止正在运行的 Java 程序。
  2. 重新启动项目。
  3. 刷新浏览器页面。

❓ 为什么这样做有效?

  • 报错原因 :MySQL 8 默认的认证方式(caching_sha2_password)在某些配置下需要获取公钥,而 Java 驱动默认禁止此操作。
  • 解决原理 :mysql_native_password 是 MySQL 5.7 及以前版本使用的旧认证方式,它与 Java 的 JDBC 驱动兼容性极好,不需要复杂的公钥交换过程,因此能直接解决连接被拒绝的问题。

注意:如果你不确定自己的数据库密码是多少,或者执行上述命令报错,请告诉我,我们可以尝试其他方法(如修改配置文件)。

相关推荐
Franciz小测测7 分钟前
MySQL 增量备份实践:文件都在,为什么仍可能恢复失败?
数据库·mysql·binlog
2401_891409263 小时前
量化数据13:港股分钟K线、Level2逐笔Tick、十档盘口和港股通历史数据的批量提取
数据库
w-w0w-w9 小时前
SQL注入
网络·数据库·sql
tianyuanwo9 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼9 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
IvorySQL10 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
幽灵诶11 小时前
Mysql(基于测试的学习)
数据库·mysql
砚底藏山河11 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
宇宙无敌暴龙战士66612 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊12 小时前
MySQL 的四种隔离级别
java·数据库·mysql