MariaDB 11 (MySQLも同様) で発生する "CLI ERROR 2026 (HY000): TLS/SSL エラー: SSL が必要ですが、サーバーはサポートしていない" エラーとその解決策

2024-07-27

MariaDB 11 (またはMySQL) で、MariaDB 10.4サーバーに接続しようとすると、以下のエラーが発生します。

CLI ERROR 2026 (HY000): TLS/SSL error: SSL is required, but the server does not support it

このエラーは、MariaDB 11クライアントがSSL接続を要求しているのに対し、MariaDB 10.4サーバーがSSLをサポートしていないために発生します。

原因

このエラーには主に2つの原因が考えられます。

  1. MariaDB 10.4サーバーがSSLをサポートしていない: MariaDB 10.4はデフォルトでSSLを無効にしており、明示的に有効にする必要があります。
  2. クライアントとサーバーのTLSバージョンが互換性がない: MariaDB 11はTLS 1.3以降を、MariaDB 10.4はTLS 1.2までしかサポートしていない可能性があります。

解決策

以下のいずれかの方法で問題を解決できます。

MariaDB 10.4サーバーでSSLを有効にする

  1. MariaDBサーバー設定ファイル (/etc/my.cnf など) を編集します。
  2. 以下の行を追加します。
ssl=REQUIRED
  1. MariaDBサーバーを再起動します。

MariaDB 11クライアントでSSLを無効にする

以下のコマンドオプションを使用して、MariaDB 11クライアントでSSLを無効にすることができます。

mysql --ssl=0 -u username -p -h hostname

MariaDB 10.4サーバーをアップグレードする

MariaDB 10.4はすでにEOL (End of Life) を迎えているため、セキュリティ上の理由からMariaDB 11.4以降にアップグレードすることを強くお勧めします。

MariaDB 11クライアントをダウングレードする

MariaDB 10.4サーバーとの互換性を保つために、MariaDB 11クライアントを10.4にダウングレードすることもできます。

  • SSL接続は、データベースサーバーとクライアント間の通信を暗号化し、データの漏洩を防ぐために重要です。可能な限り、すべてのMariaDB接続でSSLを有効にすることをお勧めします。



import mysql.connector

# MariaDB 10.4サーバーへの接続
db = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="dbname",
    ssl=0  # SSLを無効にする
)

# データベース操作
cursor = db.cursor()
cursor.execute("SELECT * FROM mytable")
for row in cursor:
    print(row)

# データベース接続のクローズ
db.close()

説明

  1. mysql.connector モジュールをインポートします。
  2. connect() 関数を使用して、MariaDBサーバーに接続します。
  3. hostuserpassworddatabase パラメーターを使用して、接続情報を設定します。
  4. ssl パラメーターを 0 に設定して、SSLを無効にします。
  5. cursor() メソッドを使用して、カーソルオブジェクトを作成します。
  6. execute() メソッドを使用して、SQLクエリを実行します。
  7. fetchone() メソッドを使用して、クエリ結果の1行を取得します。
  8. close() メソッドを使用して、データベース接続を閉じます。

注意事項

  • このコードは、MariaDB 11クライアントとMariaDB 10.4サーバーでのみ動作します。
  • SSLを無効にすることは、データベースサーバーとクライアント間の通信を暗号化しないため、セキュリティリスクが高くなります。
  • 本番環境でSSLを無効にすることはお勧めしません。



MariaDB 11でのTLS/SSLエラーの解決策:代替方法

MariaDB 10.4サーバーをTLS 1.3以降にアップグレードすることで、クライアントとサーバーのTLSバージョン互換性の問題を解決できます。ただし、アップグレードにはサーバーのダウンタイムが必要となる場合があります。

промежуточный層 (Proxy) を使用する

TLS 1.2とTLS 1.3の両方をサポートする中間層 (Proxy) を導入することで、MariaDB 11クライアントとMariaDB 10.4サーバー間の通信を仲介することができます。ただし、中間層の導入と管理には追加の複雑性とオーバーヘッドがかかります。

別のデータベースクライアントを使用する

MariaDB 11と互換性があり、TLS 1.2をサポートする別のデータベースクライアントを使用することができます。ただし、新しいクライアントを学習し、既存のアプリケーションをそのクライアント用に変更する必要があります。

TLS 1.2をサポートするカスタムクライアントライブラリをビルドする

MariaDB 11用の公式クライアントライブラリではなく、TLS 1.2をサポートするカスタムクライアントライブラリをビルドすることができます。ただし、これは高度な技術スキルと、ライブラリの継続的なメンテナンスが必要となります。

最適な解決策の選択

最適な解決策は、個々の状況によって異なります。以下の要素を考慮する必要があります。

  • 環境: 使用しているオペレーティングシステム、MariaDBのバージョン、およびアプリケーションの要件。
  • スキルセット: カスタムクライアントライブラリの構築など、複雑なタスクを実行するスキルとリソースの利用可能性。
  • ダウンタイム許容度: MariaDB 10.4サーバーをアップグレードする場合など、メンテナンス作業に伴うダウンタイム許容度。
  • セキュリティ要件: データベースサーバーとクライアント間の通信を暗号化するためのセキュリティ要件。

mariadb mariadb-10.4 mariadb-11



MariaDB、PBXT、そして謎めいたクエリ結果:プログラミング解説

この解説では、"MariaDB"と"PBXT"に関連する"MariaDB, PBXT and mysterious query results"というプログラミングについて、分かりやすく日本語で解説します。MariaDBMariaDBは、MySQL互換のオープンソースデータベース管理システム(DBMS)です。MySQLの創設者であるMichael Widenius氏によって開発されました。MariaDBは、MySQLよりも多くの機能と改善を提供しており、多くの企業や組織で使用されています。...


MariaDB on Windows - Getting Started Help?のプログラミング解説

インストールダウンロードしたインストーラーを実行します。インストールウィザードに従って、インストールオプションを選択します。rootユーザーのパスワードを設定します。インストールを完了します。基本操作MariaDBのインストールが完了したら、コマンドラインツールmysqlを使用して、データベースを操作できます。...


【初心者向け】MariaDB init スクリプトの使い方:ステップバイステップガイド

MariaDB init スクリプトには、主に2種類あります。システム init スクリプト:オペレーティングシステムのパッケージマネージャーによってインストールおよび管理されます。サーバーの起動と停止を制御します。/etc/init. d などのディレクトリに配置されます。...


MariaDB on Windows - データベースエンジン起動エラーのトラブルシューティングガイド

MariaDB on Windowsでデータベースエンジンを起動しようとすると、エラーが発生する可能性があります。このエラーは、さまざまな原因によって発生する可能性があり、解決方法も原因によって異なります。原因エラーが発生する原因として、以下の例が挙げられます。...


MySQL: データベースへの全権限付与に関するコード例と解説

MySQLやMariaDBデータベースにおいて、特定のデータベースに対するすべての権限をユーザーに付与することを説明します。また、エラーコード「mysql-error-1142」についても触れます。MySQLでは、GRANTコマンドを使用してユーザーに権限を付与します。すべての権限を与えるには、以下のように記述します:...



SQL SQL SQL SQL Amazon で見る



MySQLエラー1153のサンプルコードと対処法

MySQLエラー1153は、MySQL、MariaDB、MySQL ConnectorなどのMySQL関連のプログラミングにおいて、送信されたパケットがサーバーで設定された最大パケットサイズを超えた場合に発生します。このエラーメッセージは、通常以下のように表示されます。


オープンソースプロジェクトMariaDBへの貢献方法:スキルに合った貢献を見つけよう!

オープンソースプロジェクトへの参加は、スキルを磨いたり、新しいことを学んだり、他の開発者と交流したりするのに最適な方法です。しかし、自分に合ったプロジェクトを見つけるのは難しい場合があります。そこで、今回は、MariaDBプロジェクトに貢献したいけど、自分に合った貢献方法がわからないという人向けに、いくつかの提案を紹介します。


LOAD DATA INFILE vs INSERT INTO ... SELECT:大量データ挿入の比較

詳細:単一挿入 (Multiple Single INSERTs)INSERT文を1行ずつ実行する方式メリット: エラー発生時の影響範囲が小さい 処理の進捗状況を逐一確認できるエラー発生時の影響範囲が小さい処理の進捗状況を逐一確認できるデメリット: 処理速度が遅くなる可能性がある トランザクション処理に不向き


MySQLデータベースからデータをローカルファイルに書き出す他の方法

SELECT * INTO OUTFILE LOCAL ? は、MySQLデータベースからデータをローカルファイルに書き出すためのSQLステートメントです。このステートメントは、SELECT ステートメントで指定されたデータを、指定されたローカルファイルにテキスト形式で書き出します。


エンタープライズ環境に最適! MariaDB Enterpriseの機能と導入事例

MariaDBは、GPLライセンスのもとで利用可能です。GPLライセンスは、ソフトウェアの利用、複製、再配布、改変を自由に許可するオープンソースライセンスです。商用利用する場合でも、GPLライセンスの条件を満たせば、無料でMariaDBを使用できます。しかし、商用利用では、以下のような課題があります。