中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【MySQL8.0】windowsでrootのパスワードを忘れてしまった時の対応について

下記に方法の記載がありますが、わかりやすくメモとして残しておきます。
dev.mysql.com

1.MySQLサービスの停止

MySQLインストールウィザードを使用して
デフォルト設定でインストールをすると【MySQL80】という名前でサービスに登録されます。

※インストール時に【Configure MySQL Server as a Windows Service】
のチェックを外している場合は別ですが。。。

サービス一覧から【MySQL80】を選択し【停止】をクリックします。

f:id:tsu--kun:20211025150241p:plain


2.【C:\mysql-init.txt】ファイルを作成

ファイルの中身は

ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード';

で単一行で作成します。

init-fileオプションは単一行でなければいけないという決まりがあります。
複数行は認められません。。。


3.init-fileオプションを設定

コマンドプロンプトを起動して下記コマンドを実行

> cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
> mysqld --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini" --init-file=C:\\mysql-init.txt

注意書きとして

MySQL インストールウィザードを使用して MySQL をインストールした場合、
--defaults-file オプションの指定が必要になることがあります。
との記載があります。
私の環境ではこれが必要でした。

--defaults-fileオプションは
MySQL起動時のオプションで、サービスからの起動時に下図のとおり設定されています。
f:id:tsu--kun:20211025150326p:plain
上図場合は必要になってくると思います。


コマンドの実行が完了したら
コマンドプロンプトを閉じ、【C:\mysql-init.txt】ファイルを削除します。


4.MySQLサービスの開始

サービス一覧から【MySQL80】を選択し【開始】をクリックします。
コマンドプロンプトを起動し下記を実行します。

>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.21 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

と新しいパスワードでログイン出来れば完了です。