Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


B.5.4.1 root のパスワードをリセットする方法

MySQL の root のパスワードを設定したことがない場合、root として接続するときにサーバーはパスワードを要求しません。ただし、これはセキュリティー保護されていません。パスワードを割り当てる手順については、セクション2.10.2「最初の MySQL アカウントのセキュリティー設定」を参照してください。

root のパスワードを知っているがそれを変更する場合は、セクション13.7.1.7「SET PASSWORD 構文」を参照してください。

root のパスワードを以前設定したが忘れた場合は、新しいパスワードを設定できます。次のセクションでは、Windows システムと UNIX システムでの手順、およびすべてのシステムに当てはまる一般的な手順について説明します。

B.5.4.1.1 root のパスワードのリセット: Windows システム

Windows では、次の手順を使用してすべての MySQL root アカウントのパスワードをリセットします。

  1. Administrator としてシステムにログオンします。

  2. MySQL サーバーが実行されている場合は停止します。Windows サービスとして実行されているサーバーの場合は、サービスマネージャーを開きます (「スタート」メニューから、「コントロール パネル」「管理ツール」「サービス」の順に選択します)。リスト内で MySQL サービスを見つけて、それを停止します。

    サーバーがサービスとして実行されていない場合は、タスクマネージャーを使用して強制的に停止する必要があることがあります。

  3. 次のステートメントを含むテキストファイルを作成します。パスワードを使用するパスワードに置き換えます。

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

    UPDATE ステートメントおよび FLUSH ステートメントは、それぞれ単一の行に記述します。UPDATE ステートメントはすべての root アカウントのパスワードをリセットし、FLUSH ステートメントは付与テーブルをメモリーにリロードするようにサーバーに通知して、パスワードの変更が認識されるようにします。

  4. ファイルを保存します。この例では、ファイルに C:\mysql-init.txt という名前を付けます。

  5. コンソールウィンドウを開いて、コマンドプロンプトを表示します (「スタート」メニューから「ファイル名を指定して実行」を選択し、実行するコマンドとして cmd を入力します)。

  6. 特殊な --init-file オプション (オプション値のバックスラッシュは 2 つです) を指定して MySQL サーバーを起動します。

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

    C:\mysql 以外の場所に MySQL をインストールした場合は、それに応じてコマンドを変更します。

    --init-file オプションで指定されたファイルの内容がサーバーの起動時に実行され、各 root アカウントのパスワードが変更されます。

    サーバーがログファイルではなくコンソールウィンドウに出力を表示するようにする場合は、--console オプションをコマンドに追加することもできます。

    MySQL Installation Wizard を使用して MySQL をインストールした場合は、--defaults-file オプションを指定する必要があることがあります。

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

    適切な --defaults-file 設定はサービスマネージャーを使用して見つけることができます (「スタート」メニューから「コントロール パネル」「管理ツール」「サービス」の順に選択します)。リスト内で MySQL サービスを見つけて、それを右クリックし、「プロパティ」オプションを選択します。「実行ファイルのパス」フィールドに --defaults-file 設定が含まれています。

  7. サーバーが正常に起動されたら C:\mysql-init.txt を削除します。

新しいパスワードを使用して root として MySQL サーバーに接続できるようになりました。MySQL サーバーを停止して、通常モードで再起動します。サーバーをサービスとして実行している場合は、Windows の「サービス」ウィンドウから開始します。サーバーを手動で起動している場合は、通常使用するコマンドを使用してください。

B.5.4.1.2 root のパスワードのリセット: UNIX システム

UNIX では、次の手順を使用してすべての MySQL root アカウントのパスワードをリセットします。この手順は、サーバーの実行に通常使用する UNIX のログインアカウントを使用して実行されるようにサーバーが起動されることを想定しています。たとえば、mysql のログインアカウントを使用してサーバーを実行する場合は、この手順を使用する前に mysql としてログインしてください。または、root としてログインすることもできますが、この場合は --user=mysql オプションを指定して mysqld を起動する必要があります--user=mysql を使用せずに root としてサーバーを起動した場合、サーバーは root が所有するファイル (ログファイルなど) をデータディレクトリに作成することがあり、以降のサーバーの起動で権限関連の問題の原因となることがあります。これが発生した場合は、それらのファイルの所有権を mysql に変更するか、それらを削除する必要があります。

  1. mysqld サーバーが実行される UNIX ユーザー (たとえば、mysql) としてシステムにログオンします。

  2. サーバーのプロセス ID が含まれている .pid ファイルを見つけます。このファイルの正確な場所と名前は、配布、ホスト名、および構成によって異なります。一般的な場所は、/var/lib/mysql//var/run/mysqld/、および /usr/local/mysql/data/ です。通常、ファイル名には .pid という拡張子が付けられており、mysqld またはシステムのホスト名で始まります。

    MySQL サーバーを停止するには、次のコマンドに .pid ファイルのパス名を使用して、通常の kill (kill -9 ではありません) を mysqld プロセスに送信します。

    shell> kill `cat /mysql-data-directory/host_name.pid`

    cat コマンドには逆引用符 (通常の引用符ではなく) を使用します。これにより、cat の出力が kill コマンドに指定されます。

  3. 次のステートメントを含むテキストファイルを作成します。パスワードを使用するパスワードに置き換えます。

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

    UPDATE ステートメントおよび FLUSH ステートメントは、それぞれ単一の行に記述します。UPDATE ステートメントはすべての root アカウントのパスワードをリセットし、FLUSH ステートメントは付与テーブルをメモリーにリロードするようにサーバーに通知して、パスワードの変更が認識されるようにします。

  4. ファイルを保存します。この例では、ファイルに /home/me/mysql-init という名前を付けます。このファイルにはパスワードが含まれているため、ほかのユーザーが見ることができる場所に保存しないでください。mysql (サーバーが実行されるときのユーザー) としてログインしていない場合は、mysql による読み取りを許可する権限がファイルに設定されていることを確認してください。

  5. 特殊な --init-file オプションを指定して MySQL サーバーを起動します。

    shell> mysqld_safe --init-file=/home/me/mysql-init &

    --init-file オプションで指定されたファイルの内容がサーバーの起動時に実行され、各 root アカウントのパスワードが変更されます。

  6. サーバーが正常に起動されたら /home/me/mysql-init を削除します。

新しいパスワードを使用して root として MySQL サーバーに接続できるようになりました。サーバーを停止して、通常モードで再起動します。

B.5.4.1.3 root のパスワードのリセット: 一般的な手順

前のセクションでは、Windows システムおよび UNIX システムでのパスワードのリセットの手順を説明しました。ほかの方法としては、すべてのプラットフォームで mysql クライアントを使用して新しいパスワードを設定できます (ただし、この方法はセキュリティー保護の面で劣ります)。

  1. mysqld を停止し、--skip-grant-tables オプションを指定して再起動します。これにより、だれでもパスワードなしで接続できるようになり、すべての権限が付与されます。これはセキュアではないため、リモートクライアントによる接続を回避するために、--skip-networking と組み合わせて --skip-grant-tables を使用する必要がある場合もあります。

  2. 次のコマンドを使用して mysqld サーバーに接続します。

    shell> mysql
  3. mysql クライアントで次のステートメントを発行します。パスワードを使用するパスワードに置き換えます。

    mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
        ->                   WHERE User='root';
    mysql> FLUSH PRIVILEGES;

    FLUSH ステートメントは、パスワードの変更を認識させるために、付与テーブルをメモリーにリロードするようにサーバーに通知します。

新しいパスワードを使用して root として MySQL サーバーに接続できるようになりました。サーバーを指定して、通常モード (--skip-grant-tables オプションおよび --skip-networking オプションを指定しない) で再起動します。