MySQL 5.6.2 の時点では、ハッシュ化または暗号化なしでサーバーにパスワードを送信するクライアント側の認証プラグインが使用可能です。このプラグインは、MySQL クライアントライブラリに組み込まれています。
次の表に、プラグイン名を示します。
表 6.13 MySQL クリアテキスト認証プラグイン
サーバー側のプラグイン名 | なし (説明を参照してください) |
クライアント側のプラグイン名 | mysql_clear_password |
ライブラリオブジェクトファイル名 | なし (プラグインは組み込み済みです) |
ネイティブの MySQL 認証では、クライアントはパスワードに一方向のハッシュ化を実行してから、それをサーバーに送信します。これにより、クライアントがパスワードをクリアテキストで送信することを回避できます。セクション6.1.2.4「MySQL でのパスワードハッシュ」を参照してください。ただし、ハッシュアルゴリズムは一方向であるため、サーバー側で元のパスワードをリカバリできません。
クライアント側で入力されたパスワードを受信するようにサーバーに要求する認証スキームの場合、一方向のハッシュ化を実行できません。このような場合、クライアント側のプラグイン
mysql_clear_password
を使用すると、パスワードをクリアテキストでサーバーに送信できます。対応するサーバー側のプラグインはありません。その上、クライアント側のプラグインは、クリアテキストのパスワードを必要とする任意のサーバー側のプラグインで使用できます。(PAM
認証プラグインは、このような例の 1
つです。セクション6.3.8.5「PAM 認証プラグイン」を参照してください。)
MySQL のプラガブル認証に関する一般的な情報については、セクション6.3.7「プラガブル認証」を参照してください。
クリアテキストでパスワードを送信すると、一部の構成でセキュリティーの問題が発生する可能性があります。パスワードが傍受される可能性がある場合に問題を回避するには、クライアントはパスワードが保護される方式を使用して、MySQL サーバーに接続するようにしてください。SSL (セクション6.3.10「セキュアな接続のための SSL の使用」を参照)、IPsec、またはプライベートネットワークでも発生する可能性があります。
MySQL 5.6.7 の時点で、このプラグインが不注意に使用される可能性を低くするには、クライアントが明示的に有効にする必要があります。これは、複数の方法で実行できます。
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN
環境変数を1
、Y
、またはy
で始まる値に設定します。これにより、すべてのクライアント接続でプラグインが有効になります。mysql、mysqladmin、および mysqlslap クライアントプログラムでは、呼び出すたびにプラグインを有効にする
--enable-cleartext-plugin
オプションがサポートされています。mysql_options()
C API 関数では、接続するたびにプラグインを有効にするMYSQL_ENABLE_CLEARTEXT_PLUGIN
オプションがサポートされています。また、クライアントライブラリによって読み取られるオプショングループ内にenable-cleartext-plugin
を含めると、libmysqlclient
を使用し、オプションファイルを読み取る任意のプログラムでプラグインを有効にすることができます。