MySQL 8はかなり洗練されています "Password Validation Component" (これはvalidate_password
プラグインを置き換えます)。たくさんのオプションがあります
validate_password.number_count
validate_password.mixed_case_count
validate_password.special_char_count
validate_password.dictionary_file
validate_password.length
これらはすべてユーザーが設定できるとすれば、これを満たすランダムなパスワードを生成するメカニズムが保証されていますか?設定時に検証コンポーネントを一時停止するためにパスワードを変更するUIを作成する唯一の方法はありますか?
新しいパスワードを作成するときにユーザーのランダムなパスワードを生成するには、次を使用できます。
mysql> CREATE USER ran_user@localhost IDENTIFIED BY RANDOM PASSWORD;
+----------+-----------+----------------------+
| user | Host | generated password |
+----------+-----------+----------------------+
| ran_user | localhost | UN:5_z05J._*VtU3K%Qu |
+----------+-----------+----------------------+
1 row in set (0.10 sec)
現在/既存のユーザーのパスワードを変更するには、次のステートメントを使用できます。
mysql> ALTER USER ran_user@localhost IDENTIFIED BY RANDOM PASSWORD;
+----------+-----------+----------------------+
| user | Host | generated password |
+----------+-----------+----------------------+
| ran_user | localhost | (YU>{}tu&6@[U%!Pdw>n |
+----------+-----------+----------------------+
1 row in set (0.16 sec)
この RANDOM PASSWORD
キーワードはパスワード検証コンポーネントを満たします:
mysql> show global variables like '%validate%';
+--------------------------------------+--------+
| 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 |
+--------------------------------------+--------+
7 rows in set (0.23 sec)