我有一個執行 MySQL 的 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體。我想使用 validate_password 外掛程式來測試我的密碼並提高資料庫執行個體的安全。
簡短描述
MySQL 提供 validate_password 外掛程式,您可以使用它來提高 RDS for MySQL 資料庫執行個體的安全。此外掛程式會使用資料庫執行個體的資料庫參數群組中的參數來強制執行密碼政策。執行 MySQL 5.7 和 8.0 版的資料庫執行個體支援此外掛程式。
**注意:**validate_password 外掛程式是一個外掛程式,不是預設 MySQL 組態的一部分。當 Amazon RDS 建立 MySQL 資料庫執行個體時,依預設不會安裝此外掛程式。
解決方法
開啟適用於 RDS for MySQL 資料庫執行個體的 validate_password 外掛程式
使用主要使用者連線至 RDS for MySQL 資料庫執行個體,並執行下列命令:
MySQL [(none)]> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
這會安裝 validate_password 外掛程式,然後使用預設參數值執行此外掛程式。
驗證 validate_password 外掛程式在 RDS for MySQL 資料庫執行個體上是否已安裝且處於作用中
對資料庫執行個體執行下列查詢,以檢查 validate_password 外掛程式的狀態:
MySQL [(none)]> SELECT plugin_name, plugin_status,
plugin_type, plugin_library FROM information_schema.plugins WHERE
plugin_name='validate_password';
+-------------------+---------------+-------------------+----------------------+
| plugin_name | plugin_status | plugin_type | plugin_library |
+-------------------+---------------+-------------------+----------------------+
| validate_password | ACTIVE | VALIDATE PASSWORD | validate_password.so |
+-------------------+---------------+-------------------+----------------------+
檢查 validate_password 外掛程式的預設值
執行下列查詢以檢查外掛程式的預設參數值:
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'validate_password%';
以下是每個參數的描述:
validate_password_check_user_name
validate_password_dictionary_file
validate_password_length
validate_password_mixed_case_count
validate_password_number_count
validate_password_policy
validate_password_special_char_count
- 值 - 1
- 描述 - 要求密碼至少具有一個特殊字元
在資料庫執行個體使用的自訂資料庫參數群組中設定這些參數,但 validate_password_dictionary_file 和 validate_password_check_user_name 除外。如果您的資料庫執行個體使用預設參數群組,請建立新參數群組,然後將其連接至資料庫執行個體。這是因為您無法修改預設參數群組的參數設定。如需詳細資訊,請參閱使用參數群組。
**注意:**Amazon RDS 不驗證密碼。如果您使用下列任何一項來設定使用者密碼,則無論您的密碼政策為何,變更都會成功:
- AWS 管理主控台
- AWS Command Line Interface (AWS CLI) modify-db-instance 命令
- Amazon RDS API ModifyDBInstance 操作
重設現有密碼並建立與政策相容的密碼
安裝並開啟 password_validate 外掛程式之後,請重設現有密碼以符合新的驗證政策。
1. 測試資料庫執行個體上安裝的 password_validate 外掛程式。使用先前列出的預設外掛程式參數來建立新的資料庫使用者:
MySQL [(none)]> CREATE USER 'USER123'@'%' identified by 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
由於 validate_password_policy 設定為 MEDIUM,因此密碼必須符合 MySQL validate_password_policy 文件中所述的條件。在上述範例中,CREATE USER 命令會失敗,因為它不符合密碼政策。您會收到類似下列內容的錯誤訊息:
"Your password does not satisfy the current policy requirements."
2. 執行下列命令以建立具有符合密碼政策之密碼的使用者:
MySQL [(none)]> CREATE USER 'USER123'@'%' identified by 'Password@57';
Query OK, 0 rows affected (0.01 sec)
3. 若要驗證您已成功建立使用者,請執行下列命令:
MySQL [(none)]> SELECT user, host FROM mysql.user WHERE ( user='USER123' AND host='%' );
+-------------------+------+
| user | host |
+-------------------+------+
| validate_password | % |
+-------------------+------+
1 row in set (0.00 sec)
4. 若要變更現有使用者的密碼,請執行下列命令。使用符合政策的密碼,如下列範例中所示:
mysql> alter user 'USER123'@'%' identified by 'Password@2020';
Query OK, 0 rows affected (0.01 sec)
若要進一步了解如何為現有使用者重設密碼,請參閱如何重設根密碼 (在 MySQL 網站上)。
關閉適用於 RDS MySQL 資料庫執行個體的 validate_password 外掛程式
MySQL [(none)]> UNINSTALL PLUGIN validate_password;
相關資訊
使用 RDS for MySQL 的密碼驗證外掛程式
MySQL 文件中的密碼驗證外掛程式