MySQLの初心者として、「ERROR 1819 (HY000): Your password does not satisfy the current policy requirements」というエラーメッセージに遭遇するかもしれない。このエラーはバグではなく、ユーザーが強力なパスワードを設定することを保証するMySQLの組み込みセキュリティ機能だ。このチュートリアルでは、このエラーを理解し修正する方法を案内する。

エラーのトリガーは?

MySQLのrootユーザーのパスワードを設定する際、VALIDATE PASSWORDコンポーネントの有効化を促される場合がある。有効化されていると、このコンポーネントは提供されたパスワードの強度をチェックする。パスワードが弱いと判断されると、エラー1819に遭遇する。

例えば、次のような弱いパスワードでユーザーを作成しようとすると:

mysql> create user 'ostechnix'@'localhost' identified by 'mypassword';

次のエラーが表示される:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

パスワード検証ポリシーの理解

MySQLはVALIDATE PASSWORDプラグインが有効な場合、3つのレベルのパスワード検証ポリシーを強制する:

  1. LOW: パスワードは最低8文字以上。
  2. MEDIUM: パスワードは最低8文字以上で、数字、大文字小文字混在、特殊文字を含む必要がある。
  3. STRONG: パスワードは最低8文字以上で、数字、大文字小文字混在、特殊文字、辞書ファイルを含む必要がある。

現在のポリシーレベルを確認するには:

mysql> SHOW VARIABLES LIKE 'validate_password%';

エラーの修正方法

エラー1819を修正する主な方法は2つある:

1. ポリシーを満たすようパスワードを変更する

現在のパスワード検証ポリシーを満たすパスワードを設定する。例えば、ポリシーがMediumに設定されている場合、数字、小文字、大文字、特殊文字を含む'Password123#@!'のようなパスワードを設定できる。

2. パスワード検証ポリシーを変更する

パスワード検証ポリシーをより低いレベルに変更する:

mysql> SET GLOBAL validate_password.policy=LOW;

MEDIUMレベルに戻すには:

mysql> SET GLOBAL validate_password.policy=MEDIUM;

結論

このチュートリアルでは、一般的なMySQLエラー1819とその修正方法をカバーした。より良いセキュリティのために常に強力なパスワードを使用することを推奨する。Happy learning!