はじめに
MySQLのパスワードを変更しようとした際、パスワードポリシーに引っかかって少し戸惑ったので解決策をメモしておく。
MySQLのパスワード変更
MySQLにログイン後、パスワードを変更しようとするとこんなエラーが出た。
パスワード変更
mysql> set password for root@localhost='新パスワード';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
パスワードの複雑さを定義しているポリシーを満たしておらず、エラーになっている。
もっと複雑なパスワードにしてください、ということみたい。
ポリシーの確認
このポリシーを確認するため、以下のSQLを実行する。
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| 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 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
上記のそれぞれの設定項目の意味は、以下の通り
設定項目 | 設定内容 | デフォルト値 |
---|---|---|
validate_password_check_user_name | パスワードの一部にユーザー名が使われているか | OFF |
validate_password_dictionary_file | 除外する文字列を定義したファイルを作成 | なし |
validate_password_length | パスワードの長さ | 8 |
validate_password_mixed_case_count | パスワードポリシーが MEDIUM またはそれより強い場合の、パスワードに必要な小文字および大文字の最大数 | 1 |
validate_password_number_count | パスワードポリシーが MEDIUM またはそれより強い場合の、パスワードに必要な数値文字 (数字) の最大数 | 1 |
validate_password_policy | 数値 0、1、2 または対応する記号値 LOW、MEDIUM、STRONG を使用して指定できる。詳細は下記に示す。 | MEDIUM |
validate_password_special_char_count | パスワードポリシーが MEDIUM またはそれより強い場合の、パスワードに必要な英数字以外の文字の最大数 | 1 |
validate_password_policyの内容
ポリシー | 実施されるテスト |
---|---|
0 または LOW | 長さ |
1 または MEDIUM | 長さ。数値、小文字、大文字、および特殊文字 |
2 または STRONG | 長さ。数値、小文字、大文字、および特殊文字。辞書ファイル |
ポリシーの変更
ポリシーを変更する場合、以下のようなSQLを実行し、ポリシーを定義する変数を設定する。
ポリシーの変更
mysql> set global validate_password_length=6;
上記は、パスワードの長さを6文字に変更している。