MySQL 如何在 Java 中连接 MySQL 数据库时禁用“建立 SSL 连接而不进行服务器身份验证不推荐”的警告?

MySQL 如何在 Java 中连接 MySQL 数据库时禁用“建立 SSL 连接而不进行服务器身份验证不推荐”的警告?

Java 中连接 MySQL 数据库时,如果使用 SSL 连接并没有进行服务器身份验证,会出现以下警告信息:

[Warning] 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.

这是 MySQL 数据库对于安全连接的一个警告,提醒用户未进行服务器的身份验证。虽然这个警告可以忽略,但是为了保证连接的安全性,我们需要在 Java 中禁用这个警告。

阅读更多:MySQL 教程

解决方法

  1. 为 SSL 连接提供有效证书

在 MySQL 数据库中开启 SSL 连接时,在服务器端需要提供 SSL 证书。客户端验证 SSL 证书时,会检查证书是否是由可信机构颁发的,并且验证证书是否为有效证书。如果服务器端提供的 SSL 证书无法通过验证,就会出现上述警告信息。

解决方法是,为 MySQL 服务器提供有效 SSL 证书,并将证书的 CA 根证书添加到客户端的信任证书库中。这样客户端在连接 MySQL 数据库时就能通过验证。

  1. 禁用服务器身份验证

为了在客户端连接 MySQL 数据库时禁用服务器身份验证警告,我们可以在连接 URL 中添加 verifyServerCertificate=false 参数。这样客户端在连接 MySQL 数据库时就不会验证服务器端的 SSL 证书了,从而避免了警告信息的出现。示例代码如下:

String url = "jdbc:mysql://localhost/test?useSSL=true&verifyServerCertificate=false";
Connection conn = DriverManager.getConnection(url, "username", "password");

上述代码中,通过在连接的 URL 中添加 verifyServerCertificate=false 参数,实现了禁用服务器身份验证的目的。

结论

Java 中连接 MySQL 数据库时出现的 SSL 警告信息,是 MySQL 数据库为了提醒用户建立安全连接而提供的。虽然可以通过添加参数禁用警告信息,但是在保证连接安全的前提下,最好还是在 MySQL 服务器端提供有效的 SSL 证书,避免连接时出现身份验证失败等问题。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程