ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
このエラーの概要
MySQL に接続したあと、SHOW DATABASES; 等の最初の SQL を実行しようとするとこのメッセージが出ます:
mysql> SHOW DATABASES;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement
before executing this statement.
これはエラーというよりも、MySQL からの「パスワードを変更してから使え」という強制要求です。
発生する 3 つの状況
| 状況 | 詳細 |
|---|---|
| MySQL 初回インストール後 | MySQL 5.7+ では root の初期パスワードが password_expired = Y になっている |
| 新規ユーザー作成時 | CREATE USER ... PASSWORD EXPIRE; で作成された |
| パスワード有効期限 | default_password_lifetime 設定で期限切れになった |
対処1: 自分のパスワードを変更(最短解)
-- ログイン中のユーザー自身を変更
ALTER USER USER() IDENTIFIED BY 'NewP@ssw0rd!';
-- これでエラー解除、SQL が実行可能になる
SHOW DATABASES;
USER() はログイン中のユーザー名を返す関数なので、ホストを意識せず使えます。
対処2: 管理者が他ユーザーをリセット
-- root で接続
mysql -u root -p
-- 期限切れユーザーを確認
SELECT user, host, password_expired, password_last_changed
FROM mysql.user;
-- パスワード変更
ALTER USER 'app_user'@'localhost' IDENTIFIED BY 'NewP@ssw0rd!';
-- 期限切れフラグを解除(既存パスワードのまま)
ALTER USER 'app_user'@'localhost' PASSWORD EXPIRE NEVER;
-- パスワード変更要求を解除
ALTER USER 'app_user'@'localhost' PASSWORD EXPIRE DEFAULT;
FLUSH PRIVILEGES;
対処3: validate_password ポリシーを満たす
MySQL 8 では validate_password コンポーネントが既定で有効。下記の要件を満たさないと ERROR 1819(Your password does not satisfy...)が出ます:
-- 現在のポリシー確認
SHOW VARIABLES LIKE 'validate_password%';
-- 既定の MEDIUM ポリシー
-- validate_password.length = 8 最低 8 文字
-- validate_password.mixed_case_count = 1 大文字・小文字各 1
-- validate_password.number_count = 1 数字 1
-- validate_password.special_char_count= 1 記号 1
-- validate_password.policy = MEDIUM
-- ポリシーを LOW に緩和(開発環境のみ)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;
-- 完全に無効化(本番禁止)
UNINSTALL COMPONENT 'file://component_validate_password';
ポリシーに合うパスワード例: P@ssw0rd! / MyS3cret! / Aa1!Bb2@
対処4: パスワード有効期限の設定変更
-- 現在の既定有効期限
SHOW VARIABLES LIKE 'default_password_lifetime';
-- value = 0 なら無期限、それ以外は日数
-- 無期限に変更(my.cnf で永続化)
SET GLOBAL default_password_lifetime = 0;
-- 個別ユーザーの有効期限
ALTER USER 'app_user'@'%' PASSWORD EXPIRE INTERVAL 180 DAY;
ALTER USER 'app_user'@'%' PASSWORD EXPIRE NEVER;
ALTER USER 'app_user'@'%' PASSWORD EXPIRE DEFAULT;# /etc/mysql/my.cnf に永続化
[mysqld]
default_password_lifetime = 0
初期 root パスワードの調べ方
# MySQL 5.7+ の Linux インストール直後の root パスワード
sudo grep 'temporary password' /var/log/mysqld.log
# 2026-05-15T12:00:00.000Z 6 [Note] [MY-010454] [Server]
# A temporary password is generated for root@localhost: aBcD;eFg1234!
# このパスワードでログイン
mysql -u root -p
# Enter password: aBcD;eFg1234!
# 即パスワード変更(ERROR 1820 が出るのでこれをやる)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyN3wP@ssword!';
SET PASSWORD との違い
| 構文 | 対象 MySQL | 備考 |
|---|---|---|
ALTER USER ... IDENTIFIED BY | 5.7.6+ | 推奨、現在の標準 |
SET PASSWORD = 'pw' | 8.0+ で 'pw' を平文指定 | ログイン中ユーザー専用 |
SET PASSWORD FOR ... = PASSWORD('pw') | 5.6 まで | 非推奨、8.x で削除済 |
UPDATE mysql.user SET ... | 5.6 以前 | 絶対に使わない |
よくあるトラブル
| 症状 | 対処 |
|---|---|
| ALTER USER で ERROR 1819 が出る | パスワードがポリシーを満たさない、強度上げる or ポリシー緩和 |
| 変更したのにまた 1820 | 別ホストエントリ('user'@'%' vs 'user'@'localhost')がある |
| パスワード再設定後すぐ期限切れ | PASSWORD EXPIRE NEVER を併用 |
| レプリケーション後に発生 | マスターでもスレーブでも変更が必要 |
FAQ
Q: ALTER USER も実行できない
A: ERROR 1820 は ALTER USER だけは特別に許可されています。それ以外の SQL は実行できません。ALTER USER USER() IDENTIFIED BY 'pw'; をまず実行してください。
Q: アプリから接続すると 1820
A: アプリは ALTER USER を実行しないので、管理者が事前にパスワード期限を解除しておく必要があります。ALTER USER 'app_user'@'%' PASSWORD EXPIRE NEVER;
Q: validate_password コンポーネントが見つからない
A: MySQL 8.0 から「プラグイン」ではなく「コンポーネント」になりました。SELECT * FROM mysql.component; で確認。インストールは INSTALL COMPONENT 'file://component_validate_password';。
関連エラー
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements— ポリシー違反ERROR 1862 (HY000): Your password has expired— 5.7 以前の同種エラーERROR 1396 (HY000): Operation ALTER USER failed— ユーザー存在せず
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 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
- 1
- 1
- 1)
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1"'`--
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1)
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1"'`--
- 1
- 1
- SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?