新的mysql對於密碼設定多了更多的參數,預設也把原來的規則改得更嚴格,例如要8個字元、至少一個數字、一個英文字母和一個特殊符號。如果不符合規則的情況會報錯: ERROR 1819 (HY000) Your password does not satisfy the current policy requirements 我覺得這樣很煩,想要改規則。
OS及作業系統版本FreeBSD ddnss 11.2-RELEASE-p10 mysql Ver 8.0.16 for FreeBSD11.2 on amd64 (Source distribution)
查看現有參數進到MYSQL的SHELL中下指令 > show variables like '%password%';
+----------------------------------------------+-----------------+
| Variable_name | Value |
+----------------------------------------------+-----------------+
| caching_sha2_password_auto_generate_rsa_keys | ON |
| caching_sha2_password_private_key_path | private_key.pem |
| caching_sha2_password_public_key_path | public_key.pem |
| default_password_lifetime | 0 |
| disconnect_on_expired_password | ON |
| mysql_native_password_proxy_users | OFF |
| password_history | 0 |
| password_require_current | OFF |
| password_reuse_interval | 0 |
| report_password | |
| sha256_password_auto_generate_rsa_keys | ON |
| sha256_password_private_key_path | private_key.pem |
| sha256_password_proxy_users | OFF |
| sha256_password_public_key_path | public_key.pem |
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 | <== 8個字元
| validate_password.mixed_case_count | 1 | <== 大小寫字元數
| validate_password.number_count | 1 | <== 數字數
| validate_password.policy | MEDIUM | <== 強度政策
| validate_password.special_char_count | 1 | <== 特殊字元數
+----------------------------------------------+-----------------+
21 rows in set (0.00 sec)
其中的強度政策牽涉到會檢查的項目,有三種政策: 0 /LOW 只檢查長度
1 /MEDIUM 檢查長度、英文、數字、特殊字元要照表操課
2 /STRONG 除了上面以外,還要檢查是否是字典檔的字
修改規則基本上只要修改最小長度為4,還有把政策調整為LOW即可,長度的最小值是4,設比4小的話還是會是4。 強度政策調低後,其他的項目可以不必理會 > set global validate_password.policy=0;
> set global validate_password.length=4;
> set global validate_password.special_char_count =0;
調整後規則 | validate_password.length | 4 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 0 |
測試直接修改密碼試試。 Mysql 8修改密碼的方式有變更,原本的password 函數作廢。 要用 alter user 的方法來改 > use mysql;
Database changed
> ALTER USER 'axer'@'localhost' identified BY '123456';
Query OK, 0 rows affected (0.01 sec) <== 成功
|