Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Warning about SSL connection when connecting to MySQL database

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();             }         }     } } 
like image 740
Milos86 Avatar asked Dec 09 '15 21:12

Milos86


People also ask

How do I fix SSL connection error in MySQL?

right-click on the particular MySQL instance and select "Edit Connection" Select the "SSL" tab under Connection Method. Select the drop-down for the "Use SSL" and choose "If Available" instead of "Required". Click the "Test Connection" button at the lower right connection to make sure you can now connect without errors ...

What is SSL connection in MySQL?

MySQL supports encrypted connections between clients and the server using the TLS (Transport Layer Security) protocol. TLS is sometimes referred to as SSL (Secure Sockets Layer) but MySQL does not actually use the SSL protocol for encrypted connections because its encryption is weak (see Section 6.3.

How can I connect to MySQL database without SSL?

You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. If you want to avoid the above MySQL warning, use the syntax mention in the beginning.

How do I enable SSL on MySQL server?

Enable SSL Connections on MySQL Now, connect to the MySQL shell and check the status with the following command: mysql -u root -p --ssl-mode=required mysql> SHOW VARIABLES LIKE '%ssl%'; You should see that both have_openssl and have_ssl variables are now enabled.


2 Answers

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.

like image 132
Priyank Gosalia Avatar answered Sep 23 '22 13:09

Priyank Gosalia


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 
like image 21
Peter DeGregorio Avatar answered Sep 23 '22 13:09

Peter DeGregorio