MySQLで新しいユーザーを作成しようとした際、こんなエラーで跳ね返されたことはありませんか?
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
これは、MySQLの 「validate_password」 というプラグインが有効になっており、設定しようとしたパスワードがセキュリティ基準(長さ、複雑さ)を満たしていないために発生します。
この壁を突破する方法は2つ。環境に合わせて選びましょう。
方法A:強力なパスワードに変更する(本番環境に推奨)
セキュリティを最優先し、MySQLが求める基準をクリアするパスワードを設定する方法です。
- 基準の目安: 8文字以上、かつ「大文字・小文字・数字・記号」をすべて組み合わせる。
- 手順:
- プログラム側の設定ファイル(
config.phpなど)に、複雑なパスワードを記述する。 - MySQL側でも同じ複雑なパスワードを使用してユーザー作成・権限付与を行う。
- プログラム側の設定ファイル(
方法B:パスワードポリシーを一時的に緩和する(開発・テスト環境用)
「ローカル開発環境だから、覚えやすい短いパスワードを使いたい」という場合に有効です。MySQLの設定自体を一時的にゆるくします。
手順
まずは MySQL コンソール(sudo mysql -u root)にログインして、以下のコマンドを順に実行します。
- 現在のポリシー設定を確認する
SQLSHOW VARIABLES LIKE 'validate_password%'; - ポリシーを「LOW」に変更する(長さチェックのみにする)
SQLSET GLOBAL validate_password.policy=LOW; - 必要であれば長さ制限も下げる(例:4文字以上にする場合)
SQLSET GLOBAL validate_password.length=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でサクッと解決してしまいましょう。

コメント