このセクションでは、操作を構成および監視できるようにするために 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 USER
やSET 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
スコープ グローバル 動的 はい 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=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 |
+-----------------------------------------------+---------------------+
次のリストに、各ステータス変数の意味を示します。
MySQL 8.0 では、validate_password
プラグインが validate_password
コンポーネントとして再実装されました。 validate_password
プラグインは非推奨です。将来のバージョンの MySQL で削除される予定です。 したがって、そのオプションも非推奨になり、それらも削除されることが予想されます。 プラグインを使用する MySQL インストールでは、かわりにコンポーネントの使用に移行する必要があります。 セクション6.4.3.3「パスワード検証コンポーネントへの移行」を参照してください。
validate_password
プラグインのアクティブ化を制御するには、このオプションを使用します:
-
コマンド行形式 --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
スコープ グローバル 動的 はい 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=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
ステータス変数を使用してください。