web-dev-qa-db-ja.com

WindowsでMySQLパスワードをリセットするにはどうすればよいですか?

MySQLパスワードを再起動しようとすると、コンソールに次の出力が表示されます(これは出力の原因となった入力でもあります)。

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

111008 23:42:48 [Note] Plugin 'FEDERATED' is disabled.
111008 23:42:48 InnoDB: The InnoDB memory heap is disabled
111008 23:42:48 InnoDB: Mutexes and rw_locks use Windows interlocked functions
111008 23:42:48 InnoDB: Compressed tables use zlib 1.2.3
111008 23:42:48 InnoDB: Initializing buffer pool, size = 45.0M
111008 23:42:48 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file .\ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 24117248 bytes!
111008 23:42:48 [ERROR] Plugin 'InnoDB' init function returned error.
111008 23:42:48 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

111008 23:42:48 [ERROR] Unknown/unsupported storage engine: INNODB 
111008 23:42:48 [ERROR] Aborting

111008 23:42:48 [Note] C:\MySQL\bin\mysqld: Shutdown complete
2
Dynamic

マニュアル の手順を実行した場合は、次のコマンドを実行する必要があります。

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

これは自動的にパスワードをリセットします(それを行うコマンドでファイルを書き込んだため(ステップ3))。

このコマンドが機能しない場合は、他のコマンドを実行してください。

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

2011年9月26日にDBA StackExchangeでこのような質問に答えました

この人は私の答えを受け入れました。

これはmy.iniのハックのようなもので、うまくいくはずです。

UPDATE 2011-10-19 07:12 EDT

あなたがしなければならないのはib_logfile0とib_logifle1を削除することだけです、そしてmysqldはInnoDBに2つのinnodbログファイルを再生成させます。

以前にエラーログを見ていたらよかったのに。この間ずっと、私はあなたが助成金の問題を解決するのを手伝っています。

1
RolandoMySQLDBA

マニュアルによると:

C.5.4.1.1。ルートパスワードのリセット:WindowsシステムWindowsでは、次の手順を使用して、すべてのMySQLルートアカウントのパスワードをリセットします。

  1. 管理者としてシステムにログオンします。
  2. MySQLサーバーが実行されている場合は停止します。 Windowsサービスとして実行されているサーバーの場合は、サービスマネージャーに移動します。[スタート]メニューから、[コントロールパネル]、[管理ツール]、[サービス]の順に選択します。リストからMySQLサービスを見つけて停止します。サーバーがサービスとして実行されていない場合は、タスクマネージャーを使用してサーバーを強制的に停止する必要があります。
  3. 次のステートメントを含むテキストファイルを作成します。パスワードを使用するパスワードに置き換えます。

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

    UPDATEステートメントとFLUSHステートメントをそれぞれ1行に記述します。 UPDATEステートメントはすべてのrootアカウントのパスワードをリセットし、FLUSHステートメントはサーバーに許可テーブルをメモリに再ロードしてパスワードの変更を通知するように指示します。

  4. ファイルを保存します。この例では、ファイルの名前はC:\mysql-init.txtになります。
  5. コンソールウィンドウを開いてコマンドプロンプトを表示します。[スタート]メニューから[ファイル名を指定して実行]を選択し、実行するコマンドとしてcmdと入力します。
  6. 特別な--init-fileオプションを使用してMySQLサーバーを起動します(オプション値の円記号が2倍になっていることに注意してください)。

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

    MySQLをC:\mysql以外の場所にインストールした場合は、それに応じてコマンドを調整します。サーバーは、起動時に--init-fileオプションで指定されたファイルの内容を実行し、各rootアカウントのパスワードを変更します。サーバー出力をログファイルではなくコンソールウィンドウに表示する場合は、コマンドに--consoleオプションを追加することもできます。 MySQLインストールウィザードを使用してMySQLをインストールした場合は、--defaults-fileオプションを指定する必要がある場合があります。

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

適切な--defaults-file設定は、サービスマネージャを使用して見つけることができます。[スタート]メニューから、[コントロールパネル]、[管理ツール]、[サービス]の順に選択します。リストからMySQLサービスを見つけて右クリックし、[プロパティ]オプションを選択します。実行可能フィールドへのパスには、--defaults-file設定が含まれています。 7.サーバーが正常に起動したら、C:\mysql-init.txtを削除します。

したがって、最初にポイント3で説明したようにファイルを作成し、次にコマンドライン([スタート]-> [実行]-> [CMD(ENTER)]を使用して、そのファイルを指す--init-fileparamを指定してmysqld-nt.exeを実行する必要があります。覚えておいてください。 mysqld-nt.exeと作成したファイルの両方にフルパスを使用します。

1
Marco

あなたの場合、パスワードをリセットする前に、起動時の問題を修正する必要があります。

MySQLエラーログにリストされている最初のエラーに注意してください。

InnoDB: Error: log file .\ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 24117248 bytes!

これは、データベースファイルを別の場所からコピーしたか、my.cnf設定を編集したために、実際のib_logfile0ファイルサイズと一致しなくなったことを意味します。最初にこの問題に焦点を合わせます。

1
dabest1