MySQL 8.0 リファレンスマニュアル


6.4.3.2 パスワード検証オプションおよび変数

このセクションでは、操作を構成および監視できるようにするために validate_password が提供するシステム変数およびステータス変数について説明します。

パスワード検証コンポーネントのシステム変数

validate_password コンポーネントが有効になっている場合、パスワードチェックの構成を有効にするいくつかのシステム変数が公開されます:

mysql> SHOW VARIABLES LIKE 'validate_password.%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

パスワードのチェック方法を変更するには、サーバーの起動時または実行時にこれらのシステム変数を設定します。 次のリストは、各変数の意味を説明したものです。

  • validate_password.check_user_name

    コマンド行形式 --validate-password.check-user-name[={OFF|ON}]
    システム変数 validate_password.check_user_name
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    validate_password で、現在のセッションの有効なユーザーアカウントのユーザー名部分とパスワードを比較し、一致する場合は拒否するかどうか。 この変数は、validate_password がインストールされていないかぎり使用できません。

    デフォルトでは、validate_password.check_user_name は有効です。 この変数は、validate_password.policy の値に関係なく、ユーザー名の一致を制御します。

    validate_password.check_user_name を有効にすると、次の効果があります:

    • チェックは、validate_password が起動されるすべてのコンテキストで行われます。これには、ALTER USERSET PASSWORD などのステートメントを使用した現在のユーザーパスワードの変更、VALIDATE_PASSWORD_STRENGTH() などの関数の起動が含まれます。

    • 比較に使用されるユーザー名は、現行セッションの USER() および CURRENT_USER() 関数の値から取得されます。 つまり、別のユーザーパスワードを設定するための十分な権限を持つユーザーは、そのユーザー名にパスワードを設定でき、そのユーザーパスワードをステートメントを実行するユーザーの名前に設定できません。 たとえば、'root'@'localhost'では'jeffrey'@'localhost'のパスワードを'jeffrey'に設定できますが、パスワードを'root に設定することはできません。

    • USER() および CURRENT_USER() 関数の値のユーザー名部分のみが使用され、ホスト名部分は使用されません。 ユーザー名が空の場合、比較は行われません。

    • パスワードがユーザー名と同じであるか、その逆の場合、一致が発生し、パスワードは拒否されます。

    • ユーザー名の照合では、大文字と小文字が区別されます。 パスワードとユーザー名の値は、バイト単位でバイナリ文字列として比較されます。

    • パスワードがユーザー名と一致する場合、他の validate_password システム変数の設定方法に関係なく、VALIDATE_PASSWORD_STRENGTH() は 0 を返します。

  • validate_password.dictionary_file

    コマンド行形式 --validate-password.dictionary-file=file_name
    システム変数 validate_password.dictionary_file
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    ファイル名

    validate_password がパスワードのチェックに使用するディクショナリファイルのパス名。 この変数は、validate_password がインストールされていないかぎり使用できません。

    デフォルトでは、この変数は空の値を持ち、辞書検査は実行されません。 ディクショナリチェックを実行するには、変数値を空にしないでください。 ファイル名が相対パスとして指定された場合、サーバーのデータディレクトリを基準として解釈されます。 ファイルの内容は小文字で、1 行につき 1 語にする必要があります。 内容は、utf8 の文字セットを持つものとして処理されます。 許可される最大のファイルサイズは 1M バイトです。

    パスワードチェック中にディクショナリファイルを使用するには、パスワードポリシーを 2 (STRONG) に設定する必要があります。validate_password.policy システム変数の説明を参照してください。 これが true である場合、長さが 4 から 100 までのパスワードの各部分文字列が辞書ファイル内の単語と比較されます。 いずれかが一致すると、パスワードが拒否されます。 比較では大文字と小文字は区別されません。

    VALIDATE_PASSWORD_STRENGTH() の場合、パスワードは STRONG を含むすべてのポリシーに対してチェックされるため、強度評価には validate_password.policy 値に関係なくディクショナリチェックが含まれます。

    validate_password.dictionary_file は実行時に設定でき、値を割り当てると、サーバーを再起動せずに名前付きファイルが読み取られます。

  • validate_password.length

    コマンド行形式 --validate-password.length=#
    システム変数 validate_password.length
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 8
    最小値 0

    validate_password がパスワードを必要とする最小文字数。 この変数は、validate_password がインストールされていないかぎり使用できません。

    validate_password.length の最小値は、他のいくつかの関連するシステム変数の関数です。 この式の値より小さい値は設定できません:

    validate_password.number_count
    + validate_password.special_char_count
    + (2 * validate_password.mixed_case_count)

    validate_password は、前述の制約のために validate_password.length の値を調整すると、エラーログにメッセージを書き込みます。

  • validate_password.mixed_case_count

    コマンド行形式 --validate-password.mixed-case-count=#
    システム変数 validate_password.mixed_case_count
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 0

    パスワードポリシーが MEDIUM 以上の場合に、validate_password がパスワードを必要とする小文字と大文字の最小数。 この変数は、validate_password がインストールされていないかぎり使用できません。

    特定の validate_password.mixed_case_count 値について、パスワードには小文字が多数含まれ、大文字が多数含まれている必要があります。

  • validate_password.number_count

    コマンド行形式 --validate-password.number-count=#
    システム変数 validate_password.number_count
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 0

    パスワードポリシーが MEDIUM 以上の場合に、validate_password がパスワードを必要とする数字 (数字) の最小数。 この変数は、validate_password がインストールされていないかぎり使用できません。

  • validate_password.policy

    コマンド行形式 --validate-password.policy=value
    システム変数 validate_password.policy
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 1
    有効な値

    0

    1

    2

    validate_password によって強制されるパスワードポリシー。 この変数は、validate_password がインストールされていないかぎり使用できません。

    validate_password.policy は、validate_password.check_user_name によって独立して制御されるユーザー名に対するパスワードのチェックを除き、validate_password が他のポリシー設定システム変数を使用する方法に影響します。

    validate_password.policy 値は、数値 0、1、2、または対応するシンボリック値 LOW, MEDIUM, STRONG を使用して指定できます。 次の表では、それぞれのポリシーに対して実施されるテストについて説明します。 長さテストの場合、必要な長さは validate_password.length システム変数の値です。 同様に、他のテストに必要な値は、他の validate_password.xxx 変数によって指定されます。

    ポリシー 実施されるテスト
    0 または LOW 長さ
    1 または MEDIUM 長さ。数値、小文字、大文字、および特殊文字
    2 または STRONG 長さ。数値、小文字、大文字、および特殊文字。辞書ファイル
  • validate_password.special_char_count

    コマンド行形式 --validate-password.special-char-count=#
    システム変数 validate_password.special_char_count
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 0

    パスワードポリシーが MEDIUM 以上の場合に、validate_password がパスワードを必要とする英数字以外の最小文字数。 この変数は、validate_password がインストールされていないかぎり使用できません。

パスワード検証コンポーネントのステータス変数

validate_password コンポーネントが有効になっている場合、操作情報を提供するステータス変数が公開されます:

mysql> SHOW STATUS LIKE 'validate_password.%';
+-----------------------------------------------+---------------------+
| Variable_name                                 | Value               |
+-----------------------------------------------+---------------------+
| validate_password.dictionary_file_last_parsed | 2019-10-03 08:33:49 |
| validate_password.dictionary_file_words_count | 1902                |
+-----------------------------------------------+---------------------+

次のリストに、各ステータス変数の意味を示します。

  • validate_password.dictionary_file_last_parsed

    ディクショナリファイルが最後に解析された日時。 この変数は、validate_password がインストールされていないかぎり使用できません。

  • validate_password.dictionary_file_words_count

    辞書ファイルから読み取られた単語の数。 この変数は、validate_password がインストールされていないかぎり使用できません。

パスワード検証プラグインオプション
注記

MySQL 8.0 では、validate_password プラグインが validate_password コンポーネントとして再実装されました。 validate_password プラグインは非推奨です。将来のバージョンの MySQL で削除される予定です。 したがって、そのオプションも非推奨になり、それらも削除されることが予想されます。 プラグインを使用する MySQL インストールでは、かわりにコンポーネントの使用に移行する必要があります。 セクション6.4.3.3「パスワード検証コンポーネントへの移行」を参照してください。

validate_password プラグインのアクティブ化を制御するには、このオプションを使用します:

  • --validate-password[=value]

    コマンド行形式 --validate-password[=value]
    列挙
    デフォルト値 ON
    有効な値

    ON

    OFF

    FORCE

    FORCE_PLUS_PERMANENT

    このオプションは、サーバーが起動時に非推奨の validate_password プラグインをロードする方法を制御します。 値はセクション5.6.1「プラグインのインストールおよびアンインストール」に記載されているような、プラグインロードオプション用に指定可能ないずれかの値とする必要があります。 たとえば、--validate-password=FORCE_PLUS_PERMANENT は、起動時にプラグインをロードし、サーバーの実行中にプラグインが削除されないようにサーバーに指示します。

    このオプションは、validate_password プラグインが以前に INSTALL PLUGIN に登録されているか、--plugin-load-add にロードされている場合にのみ使用できます。 セクション6.4.3.1「パスワード検証コンポーネントのインストールおよびアンインストール」を参照してください。

パスワード検証プラグインシステム変数
注記

MySQL 8.0 では、validate_password プラグインが validate_password コンポーネントとして再実装されました。 validate_password プラグインは非推奨です。将来のバージョンの MySQL で削除される予定です。 したがって、そのシステム変数も非推奨になるため、これらも削除する必要があります。 かわりに、validate_password コンポーネントの対応するシステム変数を使用してください。パスワード検証コンポーネントのシステム変数 を参照してください。 プラグインを使用する MySQL インストールでは、かわりにコンポーネントの使用に移行する必要があります。 セクション6.4.3.3「パスワード検証コンポーネントへの移行」を参照してください。

  • validate_password_check_user_name

    コマンド行形式 --validate-password-check-user-name[={OFF|ON}]
    システム変数 validate_password_check_user_name
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    この validate_password プラグインシステム変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.check_user_name システム変数を使用してください。

  • validate_password_dictionary_file

    コマンド行形式 --validate-password-dictionary-file=file_name
    システム変数 validate_password_dictionary_file
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    ファイル名

    この validate_password プラグインシステム変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.dictionary_file システム変数を使用してください。

  • validate_password_length

    コマンド行形式 --validate-password-length=#
    システム変数 validate_password_length
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 8
    最小値 0

    この validate_password プラグインシステム変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.length システム変数を使用してください。

  • validate_password_mixed_case_count

    コマンド行形式 --validate-password-mixed-case-count=#
    システム変数 validate_password_mixed_case_count
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 0

    この validate_password プラグインシステム変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.mixed_case_count システム変数を使用してください。

  • validate_password_number_count

    コマンド行形式 --validate-password-number-count=#
    システム変数 validate_password_number_count
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 0

    この validate_password プラグインシステム変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.number_count システム変数を使用してください。

  • validate_password_policy

    コマンド行形式 --validate-password-policy=value
    システム変数 validate_password_policy
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 1
    有効な値

    0

    1

    2

    この validate_password プラグインシステム変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.policy システム変数を使用してください。

  • validate_password_special_char_count

    コマンド行形式 --validate-password-special-char-count=#
    システム変数 validate_password_special_char_count
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 0

    この validate_password プラグインシステム変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.special_char_count システム変数を使用してください。

パスワード検証プラグインステータス変数
注記

MySQL 8.0 では、validate_password プラグインが validate_password コンポーネントとして再実装されました。 validate_password プラグインは非推奨です。将来のバージョンの MySQL で削除される予定です。 その結果、そのステータス変数も非推奨になり、削除されることが予想されます。 validate_password コンポーネントの対応するステータス変数を使用します。パスワード検証コンポーネントのステータス変数 を参照してください。 プラグインを使用する MySQL インストールでは、かわりにコンポーネントの使用に移行する必要があります。 セクション6.4.3.3「パスワード検証コンポーネントへの移行」を参照してください。

  • validate_password_dictionary_file_last_parsed

    この validate_password プラグインステータス変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.dictionary_file_last_parsed ステータス変数を使用してください。

  • validate_password_dictionary_file_words_count

    この validate_password プラグインステータス変数は非推奨です。将来のバージョンの MySQL で削除される予定です。 かわりに、validate_password コンポーネントの対応する validate_password.dictionary_file_words_count ステータス変数を使用してください。


関連キーワード:  validate, 変数, パスワード, コンポーネント, count, 検証, インストール, file, 削除, コマンド