Mysql 密碼引數配置與修改 validate_password
阿新 • • 發佈:2020-07-16
Mysql 密碼引數配置與修改 validate_password
該文章匹配解決MySQL Error中的1819問題
場景
通過root使用者建立travel_agency
資料庫,目標是,新建一個使用者然後對僅對該使用者開放travel_agency
資料庫而非其他資料庫
過程
-
建立對所有ip開放的使用者sx
CEATE USER 'xx'@'%' IDENTIFIED BY 'xx@2';
-
僅對sx使用者開放
travel_agency
資料庫,並重新整理許可權使授權生效GRANT ALL PRIVILEGES ON `travel_agency`.* TO 'sx'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
回收可以使用 REVOKE ... ON ... FROM 'xxx'@'xxx';
@前面為使用者名稱,@後面接限制的主機,%表示任何地方。(注意:這裡%有的版本不包括本地,遇到這個問題再加一個localhost的使用者就可以)
刪除使用者:
DROP USER ‘xx’@'xx';
but
在預設配置下進行第一步時會報出1819問題,說密碼不符合規範
預設配置的介紹
在mysql5.7版本後已經預設安裝validate_password外掛,該外掛可以控制密碼的最低要求
我們先查詢未改動的狀態,即預設狀態
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_policy:安全強度,預設為中,即1,要求必須包含 數字、符號、大小寫字母,長度至少為8位
- validate_password_length:密碼最小長度
- validate_password_mixed_case_count:至少有大小寫字母n對,即2*n個
- validate_password_number_count:最少數字數量
- validate_password_special_char_count:最少符號數量
不常用:
- validate_password_check_user_name:使用者名稱檢測,檢測是否重名
- validate_password_dictionary_file:字典檔案,啟動後必須要滿組所使用字典的規則才能滿足密碼的條件
Solution of 1819
我們為了可以使用xx@2的密碼,對相關引數做出調整即可(使用SET GLOBAL
)
...
set global validate_password_mixed_case_count=0;
-- 改為0對就不會強制要求必須有大小寫
set global validate_password_length=2;
最終改為
mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 2 |
| validate_password_mixed_case_count | 0 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
自動增大的validate_password_length
validate_password_length
會根據其他設定進行自動增大,計算公式為
密碼最小長度=數字最小長度+符合最小長度+2*(大小寫最小對數)
驗證如下:
ysql> set global validate_password_length=2;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 2 |
| validate_password_mixed_case_count | 0 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
mysql> set global validate_password_mixed_case_count=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)