Skip to content

MariaDB 11 クライアントから MariaDB 10.4 サーバー接続時の SSL エラー

問題:MariaDB 11.0+ クライアントで MariaDB 10.4 サーバーに接続時、以下のエラーが発生する

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

この問題は、MariaDB 11.0 以降のコマンドラインツール(mariadb/mysql)がデフォルトで暗号化接続(SSL/TLS)を要求するようになった一方で:

  • MariaDB 10.4 サーバーが TLS サポートを持たない
  • サーバーの SSL 設定が無効化されている という環境的に起こります。

解決手法

1. クライアントでのSSL無効化(一時的対策)

接続時に明示的に SSL を無効化するオプションを指定:

bash
mariadb --host=サーバーアドレス --user=ユーザー名 --password --ssl=0

または

bash
mysql --skip-ssl --host=サーバーアドレス --user=ユーザー名 --password

2. 設定ファイルで永続的にSSLを無効化(恒久対策)

クライアントマシンの ~/.my.cnf に以下を追加:

ini
[client]
skip-ssl = true

設定後、オプションなしで接続可能:

bash
mariadb --host=サーバーアドレス --user=ユーザー名 --password

ファイルパスについて

  • Linux/macOS: $HOME/.my.cnf
  • Windows: C:\Users\<ユーザー名>\.my.cnf

根本的原因と恒久対策

バージョン互換性の問題

  • MariaDB 11.0+ クライアント (2023年リリース)
    • デフォルトで暗号化接続(--ssl)を要求 (MDEV-27105)
    • セキュリティ強化のため
  • MariaDB 10.4 サーバー
    • 2024年6月でサポート終了 (EOL)
    • デフォルトではTLSが無効

推奨される恒久対策

  1. サーバーを最新版にアップグレード

    bash
    # 例: Ubuntuでのアップグレード手順
    sudo apt update
    sudo apt install mariadb-server-11.0
    • MariaDB 11.4+ は自動TLS設定をサポート
    • セキュリティ更新の適用
  2. 既存サーバーでTLSを有効化my.cnf に設定追加:

    ini
    [mysqld]
    ssl-cert = /etc/mysql/ssl/server-cert.pem
    ssl-key = /etc/mysql/ssl/server-key.pem
    bash
    sudo systemctl restart mariadb
    • 正規のSSL証明書が必要

セキュリティリスクについて

--skip-ssl は通信が平文になるため、本番環境・公共ネットワークでは非推奨。一時的なトラブルシューティングのみで使用してください。


技術的背景

  • クライアントの動作変更: MariaDB 10.10.1 (2022年) から SSL 必須化が段階的に導入
  • エラー発生条件:
  • サーバーのTLSサポート確認方法:
    sql
    SHOW VARIABLES LIKE '%ssl%';
    -- `have_ssl` が 'YES' なら有効

バージョンサポート状況

  • MariaDB 10.4: 2024年6月で公式サポート終了
  • MariaDB 10.6: 2026年7月までサポート
  • 推奨: サポート中のバージョン (10.11+ または 11.x) への移行

恒久対策としてのサーバーアップグレードを推奨します。一時的なSSL無効化は開発環境でのみ利用し、必ず最新バージョンへの移行計画を立ててください。