使用下面的两个类,我尝试连接到一个MySQL数据库。然而,我总是得到这个错误:
Wed Dec 09 22:46:52 CET 2015 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.
这是带有main方法的测试类:
public class TestDatabase {
public static void main(String[] args) {
Database db = new Database();
try {
db.connect();
} catch (Exception e) {
e.printStackTrace();
}
db.close();
}
}
这是数据库类:
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();
}
}
}
}
从8.0.13开始,useSSL参数现在已弃用,你应该使用sslMode:
MySQL:: MySQL Connector/J 8.0 Developer Guide:: 6.3.5 Security
sslMode
By default, network connections are SSL encrypted; this property
permits secure connections to be turned off, or a different levels of
security to be chosen. The following values are allowed: "DISABLED" -
Establish unencrypted connections; "PREFERRED" - (default) Establish
encrypted connections if the server enabled them, otherwise fall back
to unencrypted connections; "REQUIRED" - Establish secure connections
if the server enabled them, fail otherwise; "VERIFY_CA" - Like
"REQUIRED" but additionally verify the server TLS certificate against
the configured Certificate Authority (CA) certificates;
"VERIFY_IDENTITY" - Like "VERIFY_CA", but additionally verify that the
server certificate matches the host to which the connection is
attempted.
This property replaced the deprecated legacy properties "useSSL",
"requireSSL", and "verifyServerCertificate", which are still accepted
but translated into a value for "sslMode" if "sslMode" is not
explicitly set: "useSSL=false" is translated to "sslMode=DISABLED";
Unknown macro: {"useSSL=true", "requireSSL=false",
"verifyServerCertificate=false"} is translated to "sslMode=PREFERRED";
Unknown macro: {"useSSL=true", "requireSSL=true",
"verifyServerCertificate=false"} is translated to "sslMode=REQUIRED";
Unknown macro: {"useSSL=true" AND "verifyServerCertificate=true"} is
translated to "sslMode=VERIFY_CA". There is no equivalent legacy
settings for "sslMode=VERIFY_IDENTITY". Note that, for ALL server
versions, the default setting of "sslMode" is "PREFERRED", and it is
equivalent to the legacy settings of "useSSL=true",
"requireSSL=false", and "verifyServerCertificate=false", which are
different from their default settings for Connector/J 8.0.12 and
earlier in some situations. Applications that continue to use the
legacy properties and rely on their old default settings should be
reviewed.
The legacy properties are ignored if "sslMode" is set explicitly. If
none of "sslMode" or "useSSL" is set explicitly, the default setting
of "sslMode=PREFERRED" applies.
Default Value PREFERRED Since Version 8.0.13