MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JavaでMySQLに接続した際の「サーバーのID検証なしでSSL接続を確立することはお勧めしません」という警告を無効化する方法

Javaからデータベースへ接続する際に表示されるSSL警告を無効化したい場合は、JDBC URLに autoReconnect=true&useSSL=false を追加します。

基本的な記述方法

autoReconnect=true&useSSL=false

JDBC URL全体の書式は以下のとおりです。

yourJdbcURL = "jdbc:mysql://localhost:yourPortNumber/yourDatabaseName?autoReconnect=true&useSSL=false";

警告が表示される仕組み

useSSL=false を指定しない場合、以下のような警告メッセージが出力されます。

Wed Feb 06 18:53:39 IST 2019 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.

この警告は、MySQL 5.5.45以降、5.6.26以降、および5.7.6以降のバージョンでは、明示的なオプションが設定されていない場合にデフォルトでSSL接続が要求されるために発生します。既存のSSL非対応アプリケーションとの互換性を保つため、verifyServerCertificate プロパティは false に設定されています。警告を解消するには、次のいずれかの対応が必要です。

  • useSSL=false を設定して、SSLを明示的に無効化する
  • useSSL=true を設定し、サーバー証明書の検証用トラストストアを提供する

警告を回避するJavaコード例

上記のMySQL警告を回避したい場合は、冒頭で紹介した構文を使用します。実際のJavaコードは以下のとおりです。

import java.sql.Connection;
import java.sql.DriverManager;
public class AvoidSQLWarnDemo {
    public static void main(String[] args) {
        String JdbcURL = "jdbc:mysql://localhost:3306/mybusiness?" + "autoReconnect=true&useSSL=false";
        String Username = "root";
        String password = "123456";
        Connection con = null;
        try {
            con = DriverManager.getConnection(JdbcURL, Username, password);
            System.out.println("Your JDBC URL is as follows:" + JdbcURL);
        } catch (Exception exec) {
            exec.printStackTrace();
        }
    }
}

実行結果

上記のJavaプログラムを実行すると、警告は表示されなくなります。代わりに、以下のような出力が得られます。

Your JDBC URL is as follows:jdbc:mysql://localhost:3306/mybusiness?autoReconnect=true&useSSL=false

このように、JDBC URLに useSSL=false を明示的に指定するだけで、開発環境などでの不要なSSL警告を簡単に解消できます。ただし、本番環境では通信のセキュリティを確保するため、useSSL=true を設定し、適切なトラストストアによるサーバー証明書の検証を行うことを推奨します。

  1. JavaでMySQLに接続する方法を解説!JDBC接続の基本コード

    JavaとMySQLを接続するには? JavaアプリケーションからMySQLデータベースに接続するには、JDBC(Java Database Connectivity)を使用します。JDBCは、Javaからリレーショナルデータベースへアクセスするための標準APIであり、MySQL用のJDBCドライバ(Connector/J)をクラスパスに追加しておく必要があります。 以下は、Javaのコードを使ってMySQLに接続する基本的なサンプルです。 MySQL接続のサンプルコード import java.sql.Connection; import java.sql.DriverManager; p

  2. IntelliJ IDEAでMySQLサーバーに接続する方法を徹底解説

    ご存知の通り、MySQLサーバーの操作にはMySQL Workbenchを併用すると、データベース管理がより直感的かつ簡単になります。 しかし近年では、ソースコードのコンパイルやビルドだけでなく、データベース管理システム(DBMS)との連携機能まで備えたモダンなIDEが数多く登場しています。 その代表格がJetBrains社の製品群です。本記事では、多くの開発者に利用されているIntelliJ IDEAを使ってMySQLサーバーに接続する手順を、初心者にもわかるよう丁寧に解説します。 それでは早速始めましょう! IntelliJでMySQLサーバーに接続する手順 注意: 本記事ではIntel