With the two classes below, I've tried connect to a MySQL database. However, I always get this error:
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.
This is the test class with the main
method:
public class TestDatabase {
public static void main(String[] args) {
Database db = new Database();
try {
db.connect();
} catch (Exception e) {
e.printStackTrace();
}
db.close();
}
}
This is the Database
class:
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();
}
}
}
}
Your connection URL should look like the below,
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
This will disable SSL and also suppress the SSL errors.
How about using SSL but turning off server verification (such as when in development mode on your own computer):
jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true
mention the url
like:
jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false
but in xml configuration when you mention & sign, the IDE shows below error:
The reference to entity "useSSL" must end with the ';' delimiter.
and then you have to explicitly use the &
instead of &
to be determined as &
by xml
thereafter in xml
you have to give the url in xml configuration like this:
<property name="connection.url">jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false</property>
An alternative method would be:
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) {
...
}
Although, I don't think the auto-reconnect setting is needed to remove the warning.
you need to user your mysql path like this:
<property name="url" value="jdbc:mysql://localhost:3306/world?useSSL=true"/>
I found this warning too then I fixed it by using SSL=false suffix to the connection string like this example code.
Example:
connectionString = "jdbc:mysql://{server-name}:3306/%s?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"
Use this to solve the problem in hive while making connection with MySQL
<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>
This was OK for me:
this.conn = (Connection)DriverManager
.getConnection(url + dbName + "?useSSL=false", userName, password);
I use this property for hibernate in config xml
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/bookshop?serverTimezone=UTC&useSSL=false
</property>
without - serverTimezone=UTC - it doesn't work
the new versions of mysql-connector establish SSL connection by default ...to solve it:
Download the older version of mysql-connector such as mysql-connector-java-5.0.8.zip
. . or . . Download OpenSSL for Windows and follow the instructions how to set it
Solution To fix it, append a useSSL=false at the end of the MySQL connection string :
ex.
application.properties
mysql datasource
spring.datasource.url=jdbc:mysql://localhost/dbname?useSSL=false
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
来源:https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database