web-dev-qa-db-ja.com

MySQLデータベースに接続するときのSSL接続に関する警告

以下の2つのクラスで、MySQLデータベースに接続しようとしました。しかし、私はいつもこのエラーが出ます:

Wed Dec 09 22:46:52 CET 2015警告:サーバーのIDを確認せずにSSL接続を確立することはお勧めできません。 MySQL 5.5.45以降、5.6.26以降、および5.7.6以降の要件によると、明示的なオプションが設定されていない場合は、デフォルトでSSL接続を確立する必要があります。 SSLを使用しない既存のアプリケーションとの互換性のために、verifyServerCertificateプロパティは 'false'に設定されています。 useSSL = falseを設定して明示的にSSLを無効にするか、useSSL = trueを設定してサーバー証明書の検証用のトラストストアを提供する必要があります。

これはmainメソッドを持つテストクラスです。

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();
            }
        }
    }
}
281
Milos86

接続URLは以下のようになります。

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

これにより、SSLが無効になり、SSLエラーも抑制されます。

528
Priyank Gosalia

SSLを使用してサーバーの検証をオフにする方法(自分のコンピューターで開発モードになっている場合など):

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

代替方法は次のとおりです。

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) {
...
}

ただし、警告を削除するために自動再接続設定が必要とは思われません。

20
Jon

urlのように記述します。

jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false

しかし、xml設定でsignに言及すると、IDEの下にエラーが表示されます。

The reference to entity "useSSL" must end with the ';' delimiter.

それから&の代わりに&を明示的に使用して&にし、その後xmlxmlにURLを指定する必要があります。この:

<property name="connection.url">jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&amp;useSSL=false</property>
19
ArifMustafa

あなたはこのようにあなたのmysqlパスを使用する必要があります:

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

私はこの警告も見つけました、それから私はこの例のコードのように接続文字列にSSL = false接尾辞を使うことによってそれを修正しました。

例:

connectionString = "jdbc:mysql://{server-name}:3306/%s?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"
10

MySQLと接続しながらHiveの問題を解決するためにこれを使用してください

<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>
9
KARTHIKEYAN.A

これは私には問題ありませんでした。

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

Config xmlのhibernateにこのプロパティを使います

<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/bookshop?serverTimezone=UTC&amp;useSSL=false
</property>

- なしserverTimezone = UTC - 動かない

新しいバージョンのmysql-connectorは、デフォルトでSSL接続を確立します...それを解決するために、

mysql-connector-Java-5.0.8.Zip のような古いバージョンのmysql-connectorをダウンロードします。

。 。または。 。 Windows用OpenSSL をダウンロードして、設定方法に従ってください。

2
Ahmad.ak

解決方法それを修正するには、MySQL接続文字列の末尾にuseSSL = falseを追加します。

例.

application.properties

mySQLデータソース

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
1
Pravin