Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

【Windows/Linux対応】紛失したMySQLのrootパスワードをリセットする方法

MySQLのrootパスワードを紛失・忘れてしまった場合でも、正しい手順を踏めば再設定は可能です。この記事では、WindowsとLinuxそれぞれの環境でrootパスワードをリセットする具体的な方法を詳しく解説します。

背景:なぜリセット方法を知っておくべきか

どれほど注意していても、MySQLのrootパスワードをうっかり忘れてしまうことはあります。そうなるとデータベースサーバーから締め出され、新しいデータベースを作成できなくなるだけでなく、サーバー自体の管理もほぼ不可能になってしまいます。こうした事態に備えて、rootアクセスを取り戻す方法を知っておくことは非常に重要です。以下では、WindowsとLinuxの両方でMySQLのrootユーザーのパスワードをリセットする手順を紹介します。

WindowsでMySQLのrootパスワードをリセットする

まず、管理者(Administrator)としてサーバーにログオンします。MySQLサーバーが稼働中の場合は、先に停止させる必要があります。スタートメニューコントロールパネル管理ツールサービス の順に画面を開き、一覧からMySQLサーバーを探して停止してください。

もしサービス一覧に表示されていないのにMySQLがまだ動いている場合は、MySQLがサービスとして実行されていないことを意味します。その際はCtrl+Alt+Delキーでタスクマネージャーを起動し、MySQLのプロセスを強制終了させてください。

MySQLプロセスを停止したら、UPDATE文とFLUSHコマンドを組み合わせて、パスワードの変更を強制的に適用します。お好みのテキストエディタで新規ファイルを作成し、以下の内容を入力してください。「NewMySQLPassword」の部分は任意の新しいパスワードに置き換えます。

UPDATE mysql.user SET Password=PASSWORD("NewMySQLPassword") WHERE User='root'; FLUSH PRIVILEGES;

1行目は、mysql.userテーブル内の「root」ユーザーの「Password」フィールドの値を「NewMySQLPassword」へ更新する処理です。2行目のFLUSH PRIVILEGESは古い権限情報を破棄し、新しいパスワードがすべての場所で確実に使われるようにします。このファイルをC:\mysql_reset.txtという名前で保存しましょう。

次に、このファイルを初期化パラメータとして渡してMySQLサーバーを起動します。スタートメニューファイル名を指定して実行 を開き、「cmd」と入力してEnterキーを押してコマンドプロンプトを立ち上げ、以下のコマンドを実行します。

C:\mysql\bin\mysqld-nt --init-file=C:\mysql_reset.txt

サーバーの起動が完了したら、C:\mysql_reset.txtファイルを必ず削除してください。これでrootパスワードのリセットは完了です。最後に、サービスマネージャーからMySQLサーバーを通常通り再起動すれば、新しいパスワードでログインできるようになります。

LinuxでMySQLのrootパスワードをリセットする

rootユーザーとしてLinuxマシンにログオンします。Linuxでのリセット手順は、①MySQLサーバーを停止する、②権限テーブルを読み込まずに再起動してパスワードなしでrootログインできる状態にする、③新しいパスワードを設定する、④サーバーを通常モードで再起動する、という流れになります。

まず、以下のコマンドでMySQLサーバーを停止します。

# /etc/init.d/mysql stop

次に、--skip-grant-tablesオプションを付けてMySQLサーバーを起動します。このオプションを付けると、権限(GRANT)テーブルを読み込まない状態でサーバーが起動します。

# mysqld_safe --skip-grant-tables &

末尾の「&」は、コマンドをバックグラウンドプロセスとして実行するための指定です。続いて、rootとしてMySQLサーバーにログインします。

# mysql -u root

パスワードを求められることなくログインできるはずです。以下のコマンドで新しいパスワードを設定します。

mysql> use mysql;
mysql> update user set password=PASSWORD("NewMySQLPassword") where User='root';
mysql> flush privileges;
mysql> quit

「NewMySQLPassword」はご自身のパスワードに置き換えてください。処理の流れとしては、1行目でMySQLのシステムテーブルを選択し、2行目で「root」ユーザーの「Password」フィールドを新しいパスワードに更新、3行目で権限を再読み込みして変更を即時反映させています。

最後に、サーバーを通常モードで再起動し、新しいrootパスワードでログインできるか確認しましょう。

# /etc/init.d/mysql stop
# /etc/init.d/mysql start
# mysql -u root -pNewMySQLPassword

補足:MySQL 5.7以降をご利用の場合

上記のコマンドはMySQL 5.6以前の環境を前提としています。MySQL 5.7以降ではパスワードの保存方式が変更され、対象カラムが「authentication_string」になっているため、UPDATE文は次のように書き換える必要があります。

UPDATE mysql.user SET authentication_string=PASSWORD('NewMySQLPassword') WHERE User='root'; FLUSH PRIVILEGES;

さらに、MySQL 8.0以降では--skip-grant-tablesモードで起動した後、以下のようにFLUSH PRIVILEGESを実行してからALTER USER文を使う方法が公式に推奨されています。

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewMySQLPassword';

お疲れさまでした。これで新しいMySQLのrootパスワードが設定され、サーバーを再び利用できるようになりました。アプリケーションの接続設定などでも同じパスワードを使用している場合は、該当箇所の更新を忘れないようにしてください。

  1. Windows 7で管理者パスワードを忘れたときの対処法|リセットディスクで簡単に解除する方法

    Windows 7のログインパスワードがわからなくなり、お困りではありませんか。実際にこんな相談がありました。「Windows 7の新規マシンで管理者アカウントのパスワードを突破する方法が必要です。セットアップ中に誤ってパスワードを入力してしまい、内容がわかりません。旧マシンからのデータ移行は済んでいるので、OSを再インストールしてデータを失いたくありません。助けてください!!」実は、Windowsの管理者パスワードを忘れても、以前ほど深刻な問題ではなくなっています。比較的簡単なパスワードリセットの手順を実行すれば、パスワードを空白にしてログインしたり、新しいパスワードに再設定したりすることが

  2. Macでキーチェーンのパスワードをリセットする方法をわかりやすく解説

    Appleには、すべてのパスワードを一つの保管庫に保存できる便利な機能があります。この保管庫はパスワードマネージャーとしても機能し、「キーチェーン(Keychain)」と呼ばれています。MacBookからiPhoneまで、Apple製のすべてのデバイスに標準搭載されています。もしMacでキーチェーンのパスワードを忘れてしまった場合は、リセットするのが唯一の解決策となります。 Appleキーチェーンには何が保存されている? Appleキーチェーンは、Mac・iPhone・iPadで利用される、ロック可能な暗号化コンテナです。このロックはAppleの管理者パスワードで解除できます。キーチェーンには