NetBeans中JDBC连接MySQL报错:无法加载caching_sha2_password插件
解决NetBeans中无法加载
caching_sha2_password认证插件的问题 这个问题我之前帮不少开发者排查过,核心原因很明确:你使用的com.mysql.jdbc.Driver是MySQL的旧版JDBC驱动(属于mysql-connector-java 5.x系列),而MySQL 8.0及以上版本默认采用的caching_sha2_password认证机制,是旧驱动完全不支持的。下面给你几个可行的解决办法,按推荐优先级排序:
方法一:升级JDBC驱动到最新版本
这是最稳妥的长期解决方案,新版驱动完美适配MySQL 8.0的所有特性:
- 打开NetBeans,找到你的项目,右键点击「Libraries」→「Add JAR/Folder」
- 下载最新的
mysql-connector-j(原mysql-connector-java,版本8.x及以上),添加到项目依赖中 - 修改连接代码里的驱动类为新版:
com.mysql.cj.jdbc.Driver - 建议给JDBC URL加上时区参数,避免时区兼容问题,示例:
jdbc:mysql://localhost:3306/world?zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
方法二:修改MySQL用户的认证方式为mysql_native_password
如果你暂时不想升级驱动,可以把数据库用户的认证方式改成旧驱动支持的类型:
- 打开MySQL命令行客户端或可视化工具(如Navicat),登录到MySQL服务器
- 执行以下SQL语句(替换
your_username和your_password为你的数据库账号密码):ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; - 回到NetBeans重新尝试建立连接,就能正常访问了
方法三:检查NetBeans的连接配置细节
有时候可能是配置里的驱动类选错了:
- 打开NetBeans的「Services」窗口,找到「Databases」→「New Connection」
- 在驱动选择界面,确保如果用旧驱动,对应选「MySQL Connector/J 5.x」;如果是新版则选「MySQL Connector/J 8.x」
- 确认JDBC URL的参数格式正确,比如
zeroDateTimeBehavior=convertToNull是否正确拼接
注意:方法二只是临时的兼容方案,长期来看更推荐方法一——
mysql_native_password的安全性远不如caching_sha2_password,而且新版驱动会持续更新维护,适配更多新特性。
内容的提问来源于stack exchange,提问作者Vijay Kumar
相关产品推荐
相关产品推荐

