15.

MySQL root ユーザーの初期パスワード確認方法完全ガイド

編集
この記事の要点
  • MySQL 5.7+ は初回起動時にランダムな temporary password を生成し、/var/log/mysqld.log に出力する
  • 確認コマンド: sudo grep "temporary password" /var/log/mysqld.log
  • Bitnami / クラウドイメージは /home/bitnami/bitnami_credentials 等にプレーンテキスト保存
  • Docker 公式イメージは MYSQL_ROOT_PASSWORD 環境変数で初期化、/docker-entrypoint-initdb.d/ に SQL を置けば自動実行
  • パスワードが分からない場合は --skip-grant-tables で復旧モード起動 → root パスワードリセット
  • 初期セットアップ直後は mysql_secure_installation を必ず実行(テストDB削除・匿名ユーザー削除・remote root 禁止)

MySQL root 初期パスワードの確認

MySQL 5.7 以降は初回起動時にランダムな仮パスワードを生成し、エラーログに記録します。インストール直後に root でログインするには、このパスワードを確認する必要があります。

1. yum / dnf で入れた MySQL 5.7+ / 8.0

# 初期 temporary password を確認
sudo grep "temporary password" /var/log/mysqld.log

# 出力例
# 2026-05-17T08:12:34.123456Z 1 [Note] A temporary password is generated for root@localhost: xK6!aQwLp&z9

# ログイン
mysql -u root -p
# Enter password: xK6!aQwLp&z9

# 初期セットアップ(必須)
mysql_secure_installation

mysql_secure_installation は次を対話形式で実行します:

  • root パスワードの再設定(強度ポリシー有効化)
  • 匿名ユーザーの削除
  • remote からの root ログインを禁止
  • test データベースの削除
  • 権限テーブルのリロード

2. apt(Debian / Ubuntu)で入れた MySQL

Debian 系はインストール中にパスワードを聞かれるのが基本ですが、無人インストールやプリシード時には /etc/mysql/debian.cnf にメンテナンス用アカウントが保存されます。

# debian-sys-maint アカウントでログイン
sudo cat /etc/mysql/debian.cnf

# 出力例
# [client]
# host     = localhost
# user     = debian-sys-maint
# password = aB3xy7XYZqW0pLn
# socket   = /var/run/mysqld/mysqld.sock

# このユーザーでログインして root パスワードを変更
sudo mysql --defaults-file=/etc/mysql/debian.cnf

MySQL 8.0 / MariaDB 10.4+ の Ubuntu パッケージでは auth_socket プラグインでローカル root が透過認証になります:

# パスワード不要で root にログイン(同じ OS ユーザーから)
sudo mysql

# パスワード認証へ切り替えたい場合
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPass!';
FLUSH PRIVILEGES;

3. Bitnami / AWS Marketplace / クラウドイメージ

Bitnami スタックや AWS Marketplace の MySQL イメージは初期パスワードを平文ファイルに保存しています。

# Bitnami の場合
cat /home/bitnami/bitnami_credentials

# 出力例
# Welcome to the Bitnami WordPress
# The default username is 'user' and the application password is 'XXXXXXXXX'
# MySQL root password: ZZZZZZZZZZ

# ログイン
mysql -u root -p

# OCI/GCP のマネージドサービスは管理コンソールで設定
# AWS RDS は作成時に指定したマスタパスワード(後から CLI でリセット可)
aws rds modify-db-instance --db-instance-identifier mydb \
    --master-user-password 'NewPass!' --apply-immediately

4. Docker 公式イメージ

Docker Hub の mysql / mariadb 公式イメージは環境変数で root パスワードを指定します。指定しないと起動エラーになります。

# docker run で指定
docker run -d --name mysql8 \
    -e MYSQL_ROOT_PASSWORD=MyR00tPass! \
    -e MYSQL_DATABASE=appdb \
    -e MYSQL_USER=appuser \
    -e MYSQL_PASSWORD=AppPass! \
    -p 3306:3306 \
    mysql:8.0

# パスワードを忘れた場合は環境変数で確認
docker inspect mysql8 | grep MYSQL_ROOT_PASSWORD

# ランダム生成させる
docker run -d --name mysql8r -e MYSQL_RANDOM_ROOT_PASSWORD=yes mysql:8.0
docker logs mysql8r 2>&1 | grep "GENERATED ROOT PASSWORD"

初期化スクリプト/docker-entrypoint-initdb.d/ に置くと初回起動時のみ実行されます:

# docker-compose.yml
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: MyR00tPass!
      MYSQL_DATABASE: appdb
    volumes:
      - ./initdb:/docker-entrypoint-initdb.d  # *.sql / *.sh が初回起動時に実行される
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  mysql_data:

5. パスワードを完全に忘れた場合の復旧

--skip-grant-tables モードで MySQL を起動すると、認証なしでログインできます。終わったら必ず通常モードへ戻してください。

# 1. 停止
sudo systemctl stop mysqld

# 2. skip-grant-tables で起動
sudo mysqld_safe --skip-grant-tables --skip-networking &

# 3. パスワード無しでログイン
mysql -u root

# 4. パスワードリセット (MySQL 8.0)
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass!';
FLUSH PRIVILEGES;
EXIT;

# 5. 通常起動へ戻す
sudo killall mysqld
sudo systemctl start mysqld
mysql -u root -p

確認方法まとめ表

環境確認方法
MySQL 5.7+ / 8.0(rpm)grep "temporary password" /var/log/mysqld.log
MySQL 8.0(apt/Ubuntu)sudo mysql(auth_socket で透過認証)
MariaDB(apt)cat /etc/mysql/debian.cnf でメンテ用アカウント
Bitnamicat /home/bitnami/bitnami_credentials
Docker 公式docker inspect または docker logs
AWS RDS作成時のマスタパスワード(コンソール / CLI でリセット可)
忘れた場合--skip-grant-tables で起動 → ALTER USER

FAQ

Q: /var/log/mysqld.log に temporary password が無い
A: 2回目以降の起動後はログローテーションで消えている可能性。zgrep "temporary password" /var/log/mysqld.log* でアーカイブも見てください。

Q: ALTER USER で「Your password does not satisfy the current policy requirements」
A: validate_password プラグインが厳格モード。SHOW VARIABLES LIKE 'validate_password%'; で確認。記号・大文字・数字を含む 8 文字以上にするか、一時的にポリシーを LOW に変更。

Q: パスワードリセット後も Access denied になる
A: 'root'@'localhost''root'@'%' は別ユーザー。両方確認し、必要なら両方リセット。SELECT user, host FROM mysql.user;

セキュリティの注意

  • 初期セットアップ直後に mysql_secure_installation を必ず実行
  • root の remote ログインは禁止('root'@'%' を削除)
  • アプリ用ユーザーを別途作成し、最小権限のみ付与
  • パスワードを Git に commit しない(環境変数 / Secrets Manager 経由)
  • Docker の環境変数指定は docker history で漏れる → Docker Secrets を推奨
編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ダウンロード&インストール方法(Windows)
  2. インストール方法(Linux)
  3. コマンド一覧
  4. SQL
  5. データ型
  6. 関数
  7. 管理ツール
  8. 設定
  9. パフォーマンスチューニング関連
  10. エクスポートおよびインポート
  11. エラー&トラブル
  12. 文字コードの確認
  13. 実行中の SQL の状態確認およびプロセスキルの方法
  14. パスワードの無効化設定
  15. root ユーザーの初期パスワード確認方法
  16. rootユーザーのパスワード変更方法
  17. LIMIT, OFFSET の始まりと挙動
  18. mysqlのバージョン確認方法
  19. 実行計画の表示方法
  20. レプリケーションのステータス確認方法
  21. 中央値の導き方(バージョン8未満)
  22. 階層SQL(バージョン8未満)
  23. パーセンタイルの導き方
  24. 特定スキーマの全テーブルの全カラム情報を取得する方法
  25. MySQLで文字列の置換をする方法