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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/6045.html
標籤:MySQL
上一篇:DQL:查詢表中的記錄
下一篇:Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user'
