1. 檢查插件目錄
mysql> show variables like 'plugin_dir';
2. 下載第三方開源插件文件並上傳到步驟1目錄上
3. 配置文件中添加對象參數配置
[mysqld] plugin-load-add=validate_password.so or plugin-load=validate_password.so # validate_password_policy=2 validate-password=FORCE_PLUS_PERMANENT
4. 連接數據庫並進行安裝插件
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
5. 檢查確認
SELECT PLUGIN_NAME, PLUGIN_STATUS, plugin_library, load_option FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_library = 'validate_password.so'; mysql> show plugins;
6. 根據需求配置密碼策略
6.1 檢查策略變量配置
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 | +--------------------------------------+--------+
6.2 密碼驗證插件選項和變量
1)選項--告訴服務啟動時如何加載插件
--validate-password[=ON|OFF|FORCE|FORCE_PLUS_PERMANENT]
ON: 默認值 OFF:關閉 FORCE: 強制 FORCE_PLUS_PERMANENT: mysqld服務啟動時加載插件並防止服務在運行中將其刪除
2)變量--啟用的檢查配置項
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 : 默認值為1, 密碼強度等級 [LOW:0| MEDIUM:1 | STRONG:2] validate_password_special_char_count : 默認值為1,限制特殊字符個數 其中,validate_password_policy 0/LOW:只檢查長度。 1/MEDIUM:檢查長度、數字、大小寫、特殊字符。 2/STRONG:檢查長度、數字、大小寫、特殊字符字典文件。
7. 注意事項
7.1 賬號密碼過期,需修改密碼
遇到場景:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
# 1. 注意密碼策略要求 validate_password_policy 等 show variables like 'validate_password%'; # 2. 依據密碼策略要求修改密碼 /* -- 2.1 如果密碼與Server的策略要求不一致時,臨時修改策略及密碼后恢復密碼策略 set global validate_password_policy=0; set global validate_password_length=1; */ alter user 'root'@'localhost' identified by 'root'; /* set global validate_password_policy=1; set global validate_password_length=8; */ flush privileges; -- 2.2 密碼符合要求 alter user 'root'@'localhost' identified by 'R#isn218aio'; flush privileges;
7.2