连接到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&autoReconnect=true&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,并按照说明如何设置它