この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:T
更新日時:2026-06-11 07:07:02

タイトル: root ユーザーの初期パスワード確認方法
SEOタイトル: 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 を推奨