ウェブサイト検索

修正 - 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 スタック) をインストールする

関連記事