| この記事の要点 |
|
エラー全文
mysql> ALTER USER 'app'@'localhost' IDENTIFIED BY 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
MySQL に同梱されている validate_password (8.0+ は component_validate_password) プラグインが、指定したパスワードを「要件不足」と判断したときに出ます。CREATE USER / ALTER USER / SET PASSWORD すべてで発生します。
現在のポリシーを確認する
SHOW VARIABLES LIKE 'validate_password%';
-- MySQL 8.0 以降はピリオド付き
SHOW VARIABLES LIKE 'validate_password.%';
-- 主要項目の意味
-- validate_password.policy : 厳しさ LOW/MEDIUM/STRONG (0/1/2)
-- validate_password.length : 最低長 (デフォルト 8)
-- validate_password.mixed_case_count : 大小英字の最低数 (MEDIUM 以上で 1)
-- validate_password.number_count : 数字の最低数 (MEDIUM 以上で 1)
-- validate_password.special_char_count : 特殊文字の最低数 (MEDIUM 以上で 1)
-- validate_password.dictionary_file : 辞書ファイル (STRONG で利用)
ポリシーレベル
| レベル | 値 | 要件 |
|---|---|---|
| LOW | 0 | 長さ のみ (デフォルト 8 文字) |
| MEDIUM (default) | 1 | 長さ + 大小英字 + 数字 + 特殊文字 |
| STRONG | 2 | MEDIUM + 辞書ファイルにある単語を含まない |
対処1: ポリシーを緩和
開発環境などで短いパスワードを使いたい場合:
-- MySQL 8.0+
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 4;
-- MySQL 5.7
SET GLOBAL validate_password_policy = LOW;
SET GLOBAL validate_password_length = 4;
-- 設定後にパスワード変更
ALTER USER 'app'@'localhost' IDENTIFIED BY 'abcd';
-- 永続化したい場合は my.cnf に
-- [mysqld]
-- validate_password.policy = LOW
-- validate_password.length = 4
本番では絶対に使わないでください。
対処2: 強いパスワードに変更
MEDIUM のままでも以下のような値なら通ります:
通る例
Pa$$w0rd2024 (大小 + 数字 + 記号 + 12 文字)
Aa1!Aa1!Aa1! (繰り返しでも判定は通る)
Tar0_Suzuki! (英字 + 数字 + 記号)
通らない例
password (短い + 大文字無 + 数字無 + 記号無)
abcdefgh (大文字無 + 数字無 + 記号無)
P@ssword (数字無)
Pa$$word (数字無)
パスワード強度は SQL でも事前に評価できます:
-- 0=弱, 25, 50, 75, 100 のいずれかが返る
SELECT VALIDATE_PASSWORD_STRENGTH('Pa$$w0rd2024');
-- 100 (= 強)
SELECT VALIDATE_PASSWORD_STRENGTH('password');
-- 25 (= 弱)
対処3: 検証プラグインを無効化
どうしても外したい場合 (社内 DB / 検証環境のみ):
-- MySQL 8.0+ (Component 方式)
UNINSTALL COMPONENT 'file://component_validate_password';
-- MySQL 5.7 (Plugin 方式)
UNINSTALL PLUGIN validate_password;
-- 再有効化
INSTALL COMPONENT 'file://component_validate_password';
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
パスワード変更コマンド一覧
-- 8.0+ 推奨構文
ALTER USER 'user'@'localhost' IDENTIFIED BY 'Pa$$w0rd2024';
-- 5.7 でも動く
SET PASSWORD FOR 'user'@'localhost' = 'Pa$$w0rd2024';
-- 自分自身のパスワード
ALTER USER USER() IDENTIFIED BY 'Pa$$w0rd2024';
-- 認証プラグイン指定 (8.0+ デフォルトは caching_sha2_password)
ALTER USER 'user'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'Pa$$w0rd2024';
初回 root パスワード設定でハマるパターン
MySQL を新規インストールした直後の root には一時パスワードが設定されており、最初のログイン時に変更を求められます。このとき validate_password が有効なので、弱い PW を入れるとエラーになります。
# 一時パスワードを取得
sudo grep 'temporary password' /var/log/mysqld.log
# A temporary password is generated for root@localhost: xxxxx
# ログイン後、まず強いパスワードに変更
mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Pa$$w0rd2024';
# その後でポリシーを必要に応じて緩和
mysql> SET GLOBAL validate_password.policy = LOW;
関連エラー
| エラー番号 | 意味 |
|---|---|
| ERROR 1819 (HY000) | 本記事 — パスワード強度不足 |
| ERROR 1820 (HY000) | パスワード変更必須 (期限切れ) |
| ERROR 1133 (42000) | そのユーザー名・ホストが存在しない |
| ERROR 1396 (HY000) | CREATE USER 失敗 (既存ユーザー) |
FAQ
Q: my.cnf に書いて再起動しても反映されない
A: MySQL 8.0 はピリオド形式 validate_password.policy、5.7 はアンダースコア validate_password_policy。バージョンによって書き方が違います。
Q: GRANT 文の中でパスワード設定したい
A: 8.0 では非推奨。CREATE USER ... IDENTIFIED BY ... でユーザー作成 → GRANT ... ON ... TO 'user'@'host' の 2 段階に分けます。
Q: 緩和したのにエラーが続く
A: SET GLOBAL は新規セッションから有効。現在のセッションで再ログインするか、SET SESSION も併用してください。
子ページはありません
- 1071 Specified key was too long; max key length is 767 bytes
- ERROR 1063 (42000): Incorrect column specifier for column '~'
- mysqld: Can't change dir to '...\MySQL\MySQL Server X.X\data\' (OS errno 2 - No such file or directory)
- Install/Remove of the Service Denied!
- Datetime 型が NULL に見える
- Warning: World-writable config file '/etc/mysql/my.cnf' is ignored
- ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- Exception: Wrong MySQL configuration
- [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- Incorrect column specifier for column 'カラム名'
- BLOB/TEXT column 'description' used in key specification without a key length
- ERROR: /bin/sh: mysql_config: コマンドが見つかりません
- Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
- CSVエクスポート時に「ERROR 1045 (28000): Access denied for user 'username'@'localhost'」エラーが表示される
- Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT
- SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09