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が無効
推奨される恒久対策
サーバーを最新版にアップグレード
bash# 例: Ubuntuでのアップグレード手順 sudo apt update sudo apt install mariadb-server-11.0
- MariaDB 11.4+ は自動TLS設定をサポート
- セキュリティ更新の適用
既存サーバーでTLSを有効化
my.cnf
に設定追加:ini[mysqld] ssl-cert = /etc/mysql/ssl/server-cert.pem ssl-key = /etc/mysql/ssl/server-key.pem
bashsudo 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無効化は開発環境でのみ利用し、必ず最新バージョンへの移行計画を立ててください。