修正 - MySQL エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません
お気づきかと思いますが、MySQL root ユーザーのパスワードを設定するときに、VALIDATE PASSWORD
コンポーネントを有効にするように求められます。有効にすると、パスワードの検証コンポーネントが指定されたパスワードの強度を自動的にチェックし、十分に安全なパスワードのみを設定するようにユーザーに強制します。脆弱なパスワードを指定すると、「ERROR 1819 (HY000): Your Password is not満たす現在のポリシー要件
」のようなエラーが発生します。
技術的に言えば、これは実際にはエラーではありません。これは、現在のパスワード ポリシー要件に基づいて、ユーザーに強力なパスワードのみの入力を強制する組み込みのセキュリティ メカニズムです。
例を示しましょう。次のコマンドを使用して、root
ユーザーとして MySQL サーバーにログインします。
mysql -u root -p
弱いパスワードを持つデータベース ユーザーを作成します。
mysql> create user 'ostechnix'@'localhost' identified by 'mypassword';
そして、次のエラーが発生します。
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません
見る? Validate Password
コンポーネントでは、弱いパスワード (つまり、この場合は mypassword
) を持つユーザーを作成できません。
パスワードが現在のパスワード ポリシーの要件を満たすか、Validate Password
コンポーネントを無効にするまで、このエラーが発生し続けます。その方法については次のセクションで説明します。
修正 - MySQL エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません
Validate Password
プラグインが有効になっている場合、次の 3 つのレベルのパスワード検証ポリシーが適用されます。
- 低長さ >= 8 文字。
- 中 長さ >= 8、数字、大文字と小文字混合、特殊文字。
- STRONG 長さ >= 8、数値、大文字と小文字混合、特殊文字、辞書ファイル。
これらのポリシー レベルに基づいて、適切なパスワードを設定する必要があります。たとえば、パスワード検証ポリシーが「中」に設定されている場合は、数字、小文字、大文字、特殊文字を含む少なくとも 8 文字のパスワードを設定する必要があります。
まず、現在のパスワード ポリシー レベルを見つける必要があります。これを行うには、次のコマンドを実行してパスワード検証プラグインのシステム変数を表示します。
mysql> SHOW VARIABLES LIKE 'validate_password%';
サンプル出力:
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| 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 | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.09 sec)
mysql でパスワード検証ポリシーを表示する
ご覧のとおり、現在適用されているパスワード レベルは中です。したがって、パスワードは、数字、大文字と小文字の混合、特殊文字を含む 8 文字にする必要があります。
次のコマンドを使用して、このパスワードを設定します - Password123#@!
mysql> create user 'ostechnix'@'localhost' identified by 'Password123#@!';
Query OK, 0 rows affected (0.36 sec)
mysqlでデータベースユーザーを作成する
見る?それは今すぐ機能します!したがって、「ERROR 1819 (HY000)...
」エラーを修正するには、現在のパスワード検証ポリシーに従ってパスワードを入力する必要があります。
MySQL のパスワード検証ポリシーを変更する
また、下位レベルのパスワード ポリシーを設定して、「ERROR 1819 (HY000)...
」を解決することもできます。
これを行うには、mysql プロンプトから次のコマンドを実行します。
mysql> SET GLOBAL validate_password.policy = 0;
または、
mysql> SET GLOBAL validate_password.policy=LOW;
次に、パスワード検証ポリシーが低に変更されているかどうかを確認します。
mysql> SHOW VARIABLES LIKE 'validate_password%';
サンプル出力:
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| 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 | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
これで、以下のような弱いパスワードを持つユーザーを作成できます。
mysql> create user 'senthil'@'localhost' identified by 'password';
mysql のパスワード検証ポリシーを変更する
MEDIUM レベルのポリシーに戻すには、mysql プロンプトから次のコマンドを実行します。
mysql> SET GLOBAL validate_password.policy=MEDIUM;
パスワード ポリシーが変更されない場合は、mysql プロンプトを終了し、ターミナル ウィンドウから mysql サービスを再起動します。
sudo systemctl restart mysql
これで動作するはずです。
注意: 読者の 1 人が、次のコマンドにタイプミスがあると指摘しました。
mysql> SET GLOBAL validate_password.policy=LOW;
そのはず:
mysql> SET GLOBAL validate_password_policy=LOW;
上記のコマンドのアンダースコアに注意してください。セットアップを削除したため、このコマンドを確認する方法がありません。ただし、MySQL の新しいバージョンではコマンドが変更されていると思います。
パスワード検証ポリシーを無効にする
弱いパスワードを使用してユーザーを作成する場合は、Validate Password
コンポーネントを完全に無効にし、ユーザーの作成後に再度有効にします。
MySQL サーバーにログインします。
mysql -u root -p
Validate Password コンポーネントを一時的に無効にするには、MySQL プロンプトから次のコマンドを実行します。
mysql> UNINSTALL COMPONENT "file://component_validate_password";
任意のパスワードを使用してユーザーを作成します。
mysql> create user 'kumar'@'localhost' identified by '123456';
最後に、パスワードの検証コンポーネントを有効にします。
mysql> INSTALL COMPONENT "file://component_validate_password";
mysql でパスワード検証ポリシーを一時的に無効にする
個人的には、ポリシーをより低いレベルに変更したり、パスワード ポリシーを無効にしたりすることはお勧めしません。データベース ユーザーでも通常のユーザーでも、常に数字、大文字と小文字の混合、スペース文字を含む 8 文字以上の強力なパスワードを使用してください。
結論
このガイドでは、一般的な MySQL エラーの 1 つである エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません
と、Linux でそれを修正する方法について学びました。また、場合によっては弱いパスワードを許可するためにパスワード ポリシーを無効にする方法も学びました。個人的には、強力なパスワードを使用することをお勧めします。
関連記事:
- Ubuntu 20.04 LTS に Apache、MySQL、PHP (LAMP スタック) をインストールする
- Ubuntu 20.04 LTS に Nginx、MySQL、PHP (LEMP スタック) をインストールする