java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: NO) 出现原因和解决办法

本文记录了在使用JDBC连接MySQL数据库过程中遇到的两个常见错误:未提供密码及用户名密码不匹配的问题,并给出了详细的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  今天我在复习mysql数据库中,写JDBC测试代码的时候,在使用Junit测试运行程序的时候,遇到了这个错误
  :java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) ,从该报错的字面意思
  就可以知道是没有使用数据可密码,但是我在数据可的properties文件中,写了数据库密码了呀。怎么会报这
  种错误呢,经过多番排查终于找到了错误,由于我的粗心大意,在使用DriverManager.getConnection
  (url,user,password) 获得数据库连接的过程中,我错将getConnetion()方法的三个参数写成了一个,
  写成:DriverManager.getConnection(url); 这样,因此报如上错误。

解决过程如下:
在这里插入图片描述

解决办法:正确使用getConnection()这个方法就可以了
解决完了这个问题,我抱着能成功的态度,又运行了一下,尴尬的是,又换了另一种错误,错误为:java.sql.SQLException:
 Access denied for user ''@'localhost' (using password: YES) 这种错误和上一种错误,区别就在于,一个使用了数据库密码,
 一个没有,很想然我们刚刚遇到的错误解决了,我重新看一下代码,发现有些变量对应问题写错了。因为在数据中配置文件
 中的变量和我在Java程序中加载完毕数据库配置文件后,获取数据库配置文件中的变量不一致。

解决步骤如下:
在这里插入图片描述

在db.properties文件中的变量对应为:
在这里插入图片描述

解决办法:将错误代码改为  user = properties.getProperty("username");  即可解决。
再次运行即可获得数据库连接对象

运行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值