[MySQL]ERROR 1819 (HY000) パスワードポリシー・エラーの回避術

MySQLで新しいユーザーを作成しようとした際、こんなエラーで跳ね返されたことはありませんか?

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

これは、MySQLの 「validate_password」 というプラグインが有効になっており、設定しようとしたパスワードがセキュリティ基準(長さ、複雑さ)を満たしていないために発生します。

この壁を突破する方法は2つ。環境に合わせて選びましょう。

方法A:強力なパスワードに変更する(本番環境に推奨)

セキュリティを最優先し、MySQLが求める基準をクリアするパスワードを設定する方法です。

  • 基準の目安: 8文字以上、かつ「大文字・小文字・数字・記号」をすべて組み合わせる。
  • 手順:
    1. プログラム側の設定ファイル(config.phpなど)に、複雑なパスワードを記述する。
    2. MySQL側でも同じ複雑なパスワードを使用してユーザー作成・権限付与を行う。

方法B:パスワードポリシーを一時的に緩和する(開発・テスト環境用)

「ローカル開発環境だから、覚えやすい短いパスワードを使いたい」という場合に有効です。MySQLの設定自体を一時的にゆるくします。

手順

まずは MySQL コンソール(sudo mysql -u root)にログインして、以下のコマンドを順に実行します。

  1. 現在のポリシー設定を確認する
    SQLSHOW VARIABLES LIKE 'validate_password%';
  2. ポリシーを「LOW」に変更する(長さチェックのみにする)
    SQLSET GLOBAL validate_password.policy=LOW;
  3. 必要であれば長さ制限も下げる(例:4文字以上にする場合)
    SQLSET GLOBAL validate_password.length=4;
  4. 再度、ユーザー作成を試みる
    SQLCREATE USER IF NOT EXISTS 'db_user'@'localhost' IDENTIFIED BY 'short_pass';
    GRANT ALL PRIVILEGES ON project_db.* TO 'db_user'@'localhost';
    FLUSH PRIVILEGES;

まとめ:どっちを選ぶべき?

  • 本番環境なら: 迷わず 方法A。一度設定してしまえば手間は変わりませんし、漏洩リスクを減らせます。
  • 自分のPCでの開発なら: 利便性を取って 方法B。ただし、後で本番に移行する際にパスワードを強化するのを忘れないようにしましょう。

「どうしてもこのパスワードで通したい!」というこだわりがある時は、方法Bでサクッと解決してしまいましょう。

コメント

タイトルとURLをコピーしました