目录
问题背景
今天遇见一个这个问题,解决后发出来分享一下:
我下载了mysql-connector-java-8.0.11.jar
报错“Connected to the target VM, address: '127.0.0.1:59549', transport: 'socket' Wed Sep 13 16:56:02 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. java.sql.SQLException: Access denied for user 'username'@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at BookManagement.<init>(BookManagement.java:21) at BookManagement.main(BookManagement.java:62) Disconnected from the target VM, address: '127.0.0.1:59549', transport: 'socket' 进程已结束,退出代码 0
解决办法
这个错误表明有两个问题:
- SSL 警告:默认情况下,MySQL 8+ 版本的 JDBC 连接尝试使用 SSL,但如果没有为此配置适当的证书,会收到一个警告。在开发环境中,通常可以安全地禁用 SSL(尽管在生产环境中,建议配置并使用 SSL)。
- 访问被拒绝:这意味着提供的用户名和密码不正确,或该用户没有权限连接到指定的数据库。
解决步骤:
-
处理 SSL 警告:为你的数据库 URL 添加
useSSL=false
参数来禁用 SSL。将此行:
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/BookManagement", "username", "password");
改为:
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/BookManagement?useSSL=false", "username", "password");
处理访问拒绝问题:
- 确保你的 MySQL 数据库正在运行并且可以从
localhost
访问。 - 使用正确的用户名和密码替换上面 URL 中的
"username"
和"password"
。例如,如果你的 MySQL 用户名是root
,密码是mysecret
,那么连接代码应更改为: - 如果你不确定用户名和密码,你需要检查 MySQL 的配置或联系数据库管理员。
应用上述更改后,再次运行你的程序。这应该会解决你遇到的问题。
🌌点击下方个人名片,交流会更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓