连接到MySQL数据库时,有关SSL连接的警告

有了以下两个类,我试着连接到一个MySQL数据库。 不过,我总是得到这个错误:

Wed Dec 09 22:46:52 CET 2015 WARN:build议不build立服务器身份validation的SSL连接。 根据MySQL 5.5.45+,5.6.26+和5.7.6+的要求,如果没有设置显式选项,则必须默认build立SSL连接。 为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“false”。 您需要通过设置useSSL = false来显式禁用SSL,或者设置useSSL = true并为服务器证书validation提供信任库。

这是main方法的testing类:

 public class TestDatabase { public static void main(String[] args) { Database db = new Database(); try { db.connect(); } catch (Exception e) { e.printStackTrace(); } db.close(); } } 

这是Database类:

 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Database { private Connection con; public void connect() throws Exception{ if(con != null) return; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new Exception("No database"); } String connectionURL = "jdbc:mysql://localhost:3306/Peoples"; con = DriverManager.getConnection(connectionURL, "root", "milos23"); } public void close(){ if(con != null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } } 

您的连接url应如下所示,

 jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false 

这将禁用SSL,并抑制SSL错误。

如何使用SSL,但closures服务器validation(如在您自己的计算机上的开发模式):

 jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true 

另一种方法是:

 Properties properties = new Properties(); properties.setProperty("user", "root"); properties.setProperty("password", "milos23); properties.setProperty("useSSL", "false"); properties.setProperty("autoReconnect", "true"); try (Connection conn = DriverManager.getConnection(connectionUrl, properties)) { ... } catch (SQLException e) { ... } 

虽然,我不认为需要自动重新连接设置来删除警告。

你需要像这样使用你的mysqlpath:

 <property name="url" value="jdbc:mysql://localhost:3306/world?useSSL=true"/> 

这对我来说是好的:

 this.conn = (Connection)DriverManager .getConnection(url + dbName + "?useSSL=false", userName, password); 

使用这个来解决与MySQL连接时在configuration单元中的问题

 <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&amp;autoReconnect=true&amp;useSSL=false</value> <description>metadata is stored in a MySQL server</description> </property> 

新版本的mysql连接器默认build立SSL连接…解决它:

下载旧版本的mysql连接器,如mysql-connector-java-5.0.8.zip

。 。 要么 。 。 下载OpenSSL for Windows,并按照说明如何设置它

Interesting Posts