Linuxで「MySQLERROR1819(HY000):」を修正する方法


比較的弱いパスワードでMySQLユーザーを作成すると、「MySQL ERROR 1819(HY000):パスワードが現在のポリシー要件を満たしていません」というエラーが発生する場合があります。技術的には、これはエラーではありませんが、推奨されるパスワードポリシー要件を満たしていないパスワードを使用しているという通知です。

つまり、簡単に推測したり、ブルートフォース攻撃を行ったりする可能性のある弱いパスワードを使用しているということです。組み込みのセキュリティメカニズムは、データベースが侵害されやすくなる可能性のある弱いパスワードをユーザーが作成することを思いとどまらせます。

たとえば、次のようにユーザーを作成するときにエラーが発生しました

mysql> create user ‘tecmint’@’localhost’ IDENTIFIED BY ‘mypassword’;

パスワードが非常に弱く、セキュリティリスクをもたらす可能性があることは簡単です。

LinuxでMySQLエラー1819(HY000)を解決する方法

MySQLデータベースにはvalidate_passwordプラグインが付属しており、有効にすると、パスワード検証ポリシーが適用されます。プラグインによって適用されるパスワード検証ポリシーには3つのレベルがあります。

  • LOW: Allows users to set a password of 8 or fewer characters.
  • MEDIUM: Allows users to set a password of 8 or fewer characters with mixed cases and special characters.
  • STRONG: Allows users to set a password that has all the attributes of a medium-level password with the inclusion of a dictionary file.

デフォルトでは、パスワードポリシーはMEDIUMに設定されています。次のコマンドを実行して、パスワードポリシーレベルを確認できます。

$ SHOW VARIABLES LIKE 'validate_password%';

コマンドを実行して出力が空のセットを取得した場合、プラグインはまだ有効になっていません。

validate_passwordプラグインを有効にするには、以下のコマンドを実行します。

mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';
mysql> install plugin validate_password soname 'validate_password.so';

プラグインがアクティブ化されていることを確認するには、コマンドを実行します。

mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';

以下に示す出力が得られるはずです。

この問題を解決するには、パスワード検証ポリシーを最低レベルに設定する必要があります。これは、弱いパスワードを設定する手段を作成し、最終的にデータベースがハッカーによって危険にさらされる可能性があるため、直感に反するように聞こえます。

ただし、それでも自分の道を歩むことを主張する場合は、次のことができます。

MySQLパスワード検証ポリシーを変更する方法

MySQL ERROR 1819(HY000)エラーを解決するには、次のように低いパスワード検証ポリシーを設定します。

mysql> SET GLOBAL validate_password_policy=LOW;
OR
mysql> SET GLOBAL validate_password_policy=0;

その後、パスワード検証ポリシーレベルを確認できます。

$ SHOW VARIABLES LIKE 'validate_password%';

これで、必要に応じて、比較的弱いパスワードを割り当てて続行できます。

mysql> create user ‘tecmint’@’localhost’ IDENTIFIED BY ‘mypassword’;

「MEDIUM」パスワードポリシーレベルに戻すには、次のコマンドを呼び出すだけです。

mysql> SET GLOBAL validate_password_policy=MEDIUM;

個人的には、明らかな理由から、低レベルのパスワードポリシーを設定することはお勧めしません。通常のユーザーでもデータベースユーザーでも、大文字、小文字、数字、特殊文字を組み合わせた8文字を超える強力なMySQLパスワードを常に設定することをお勧めします。

このガイドは、このようなエラーをナビゲートする方法を知りたい人のためのものです。それ以外の場合は、強力なパスワードを設定することを常にお勧めします。