176

MySQLのユーザー名とパスワードを紛失しました。どうすれば取得できますか?

4

10 に答える 10

196

MySQLプロセスを停止します。

--skip-grant-tablesオプションを使用してMySQLプロセスを開始します。

-urootオプションを指定してMySQLコンソールクライアントを起動します。

すべてのユーザーを一覧表示します。

SELECT * FROM mysql.user;

パスワードを再設定する;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

しかし、忘れないでください

MySQLプロセスを停止します

MySQLプロセスを通常どおりに開始します(つまり、-skip-grant-tablesオプションなしで)

終わったら。そうしないと、データベースのセキュリティが危険にさらされる可能性があります。

于 2008-08-07T04:02:17.090 に答える
46

残念ながら、ユーザーパスワードは取得できません。一方向ハッシュでハッシュ化されており、わからない場合は元に戻せません。上記のXenphYanを使用して、新しいXenphYanを作成することをお勧めします。

マニュアルの次の手順を使用して、Windows上のMySQLルートアカウント のパスワードをリセットすることもできます。

  1. 管理者としてシステムにログオンします。
  2. MySQLサーバーが実行されている場合は停止します。Windowsサービスとして実行されているサーバーの場合は、サービスマネージャーに移動します。

スタートメニュー->コントロールパネル->管理ツール->サービス

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

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

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

    UPDATEステートメントとFLUSHステートメントは、それぞれ1行で記述する必要があります。UPDATEステートメントは既存のすべてのルートアカウントのパスワードをリセットし、FLUSHステートメントはサーバーに許可テーブルをメモリにリロードするように指示します。

  2. ファイルを保存します。この例では、ファイルの名前はC:\mysql-init.txtになります。
  3. コンソールウィンドウを開いて、コマンドプロンプトを表示します。

    スタートメニュー->実行->cmd

  4. 特別な--init-fileオプションを使用してMySQLサーバーを起動します。

    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設定は、ServicesManagerを使用して見つけることができます。

    スタートメニュー->コントロールパネル->管理ツール->サービス

    リストからMySQLサービスを見つけて右クリックし、[プロパティ]オプションを選択します。[実行可能ファイルへのパス]フィールドには、-defaults-file設定が含まれています。

  5. サーバーが正常に起動したら、C:\mysql-init.txtを削除します。
  6. MySQLサーバーを停止してから、通常モードで再起動します。サーバーをサービスとして実行する場合は、Windowsの[サービス]ウィンドウからサーバーを起動します。サーバーを手動で起動する場合は、通常使用するコマンドを使用してください。

これで、新しいパスワードを使用してrootとしてMySQLに接続できるようになります。

于 2008-08-07T04:54:27.937 に答える
35

ここで最も役立つ答えの改善:

1] mysql サーバーを再起動する必要はありません
2] ネットワークに接続された MySQL サーバーのセキュリティ上の懸念

MySQL サーバーを再起動する必要はありません。

FLUSH PRIVILEGES;パスワード変更のための update mysql.user ステートメントの後に使用します。

FLUSH ステートメントは、パスワードの変更を認識できるように、付与テーブルをメモリに再ロードするようにサーバーに指示します。

では、--skip-grant-options誰でもパスワードなしですべての特権を使用して接続できます。これは安全でないため、

--skip-grant-tablesを--skip-networkingと組み合わせて使用​​して、リモート クライアントが接続しないようにします。

from: 参照: resetting-permissions-generic

于 2011-11-10T10:47:23.700 に答える
6

ブルートフォースを使わずに MySQL パスワードを直接回復することはできませんが、別の方法があるかもしれません。MySQL Workbench を使用してデータベースに接続し、資格情報を「ボールト」に保存した場合は、ゴールデンです。

Windows では、資格情報は%APPDATA%\MySQL\Workbench\workbench_user_data.datに保存され、 CryptProtectDataで暗号化されます(追加のエントロピーなし)。復号化は簡単です:

std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
    DATA_BLOB inblob { length, input };
    DATA_BLOB outblob;

    if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
            throw std::runtime_error("Couldn't decrypt");
    }

    std::vector<unsigned char> output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

または、このDonationCoder スレッドで、簡単な実装のソース + 実行可能ファイルを確認できます。

于 2015-11-03T18:47:10.167 に答える
5

mysql が実行されているサーバーへのルート アクセス権がある場合は、このコマンドを使用して mysql サーバーを停止する必要があります。

sudo service mysql stop

このコマンドを使用してmysqlを起動します

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

これで、mysql にログインできます。

sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

完全な手順については、 http://www.techmatterz.com/recover-mysql-root-password/ を参照してください。

于 2016-01-22T11:36:35.247 に答える