まえがき
日頃から使っていればいいんですが、たまに思い出したように使うので
その都度rootパスワードを忘れてMySQLにログインできない。
そんな私のような人向けというか私のための記事です。
環境など
- Windows 10(64bit)
- MySQL 5.7
- サービスで実行
コマンドラインでmysql --version
と入力すれば
こんな感じでお使いのバージョンが表示されるはず。
mysql Ver 14.14 Distrib 5.7.17, for Win64 (x86_64)
サービスで動いているMySQLの息の根を止める
サービスマネージャーを起動して
MySQLの上で右クリックして停止を選択すれば止まります。
コマンドラインなら
net stop MySQL57
この方法でもよし。
パスワードなしで使えるモードでMySQLを起動
コマンドプロンプトを管理者権限で実行。
基本はこのコマンドで実行できる(がしかし)
mysqld --skip-grant-tables
mysqld: Can't change dir to 'C:\Program Files\MySQL\MySQL Server 5.7\data' (Errcode: 2 - No such file or directory)
インストール時に設定いじってるとこんな感じでうまくいかないことも
私はこのパティーンでした。
サービスのプロパティを確認
サービスマネージャーのMySQLを右クリック、プロパティを選択。
ここから実行時に指定している引数などを確認できるのでそれをパクってくる。
後ろのサービス名MySQL57
のところはいらない。
MySQLを起動
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --skip-grant-tables
パスは各自読み替えてね。
これを実行するとコマンドプロンプトは反応が返ってこなくなる、だがそれでいい。
裏でMySQLが動いている状態になる。
rootパスワードを変更する
新たにコマンドプロンプトを立ち上げてmysqlにアクセス。
mysql -u root mysql
これでmysql databaseを指定した状態で入れるはず。
Update SQLでuserテーブルの中身を更新
mysql > update user set authentication_string =PASSWORD('新しいパスワード') where user = 'root'
mysql > FLUSH PRIVILEGES;
mysql > exit;
公式ページではPassword
カラムを更新するようになっていたが
MySQL5.7にはそんなカラムはありませんでした。
authentication_string
が正解です。
コマンド実行してMySQLから抜けたら、コマンドプロンプトを閉じます。
後処理
もう1つ開いていたコマンドプロンプトも閉じます。
ただMySQLが裏で実行された状態のままになっているので
タスクマネージャーを開いて、mysqld.exe
を強制終了します。
後は通常通りサービスでMySQLを開始し、コマンドプロンプトから
mysql -u root -p
Enter Password:
再設定したパスワードでMySQLに入れる(はず)