質問
MySQL のユーザー名とパスワードを紛失してしまいました。どうすれば取得できますか?
解決
MySQL プロセスを停止します。
--skip-grant-tables オプションを使用して MySQL プロセスを開始します。
-u root オプションを使用して MySQL コンソール クライアントを起動します。
すべてのユーザーをリストします。
SELECT * FROM mysql.user;
パスワードを再設定する;
UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
しかし 忘れてはいけない に
MySQLプロセスを停止します
MySQL プロセスを通常どおり開始します (つまり、--skip-grant-tables オプションなし)
終わったら。そうしないと、データベースのセキュリティが危険にさらされる可能性があります。
他のヒント
残念ながら、ユーザーのパスワードは回復できません。一方向ハッシュでハッシュ化されているため、知らないと元に戻せません。上記の Xenph Yan を使用し、新しいものを作成することをお勧めします。
から次の手順を使用することもできます。 マニュアル MySQL のパスワードをリセットするため 根 Windows 上のアカウント:
- 管理者としてシステムにログオンします。
- MySQL サーバーが実行中の場合は停止します。Windowsサービスとして実行されているサーバーについては、サービスマネージャーに移動します。
スタートメニュー -> コントロールパネル -> 管理ツール -> サービス
次に、リスト内で MySQL サービスを見つけて停止します。サーバーがサービスとして実行されていない場合は、タスクマネージャーを使用して強制的に停止する必要があります。
テキスト ファイルを作成し、その中に次のステートメントを配置します。パスワードを使用するパスワードに置き換えます。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
の アップデート そして 流す ステートメントはそれぞれ 1 行で記述する必要があります。の アップデート このステートメントは、既存のすべての root アカウントのパスワードをリセットします。 流す ステートメントは、サーバーに許可テーブルをメモリに再ロードするように指示します。
- ファイルを保存します。この例では、ファイルの名前は次のようになります。 C:\mysql-init.txt。
コンソール ウィンドウを開いてコマンド プロンプトにアクセスします。
スタートメニュー -> ファイル名を指定して実行 -> cmd
特別なコマンドを使用して MySQL サーバーを起動します。 --init-file オプション:
C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
MySQL を別の場所にインストールした場合 C:\mysql, に応じてコマンドを調整します。
サーバーは、 --init-file 起動時のオプション、それぞれを変更 根 アカウントパスワード。
を追加することもできます。 - コンソール サーバー出力をログ ファイルではなくコンソール ウィンドウに表示する場合は、コマンドのオプションを使用します。
MySQL インストール ウィザードを使用して MySQL をインストールした場合は、 --デフォルトファイル オプション:
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
適切な --デフォルトファイル 設定は、サービス マネージャーを使用して見つけることができます。
スタートメニュー -> コントロールパネル -> 管理ツール -> サービス
リストで MySQL サービスを見つけて右クリックし、[プロパティ] オプションを選択します。「実行可能ファイルへのパス」フィールドには、 --デフォルトファイル 設定。
- サーバーが正常に起動したら、削除します C:\mysql-init.txt.
- MySQL サーバーを停止し、通常モードで再起動します。サーバーをサービスとして実行する場合は、Windows の [サービス] ウィンドウから開始します。サーバーを手動で起動する場合は、通常使用しているコマンドを使用してください。
これで、新しいパスワードを使用して root として MySQL に接続できるようになります。
ここでの最も有用な回答の改良:
1] mysqlサーバーを再起動する必要はありません
2] ネットワークに接続された MySQL サーバーのセキュリティ上の懸念
MySQL サーバーを再起動する必要はありません。
使用 FLUSH PRIVILEGES;
パスワード変更のための mysql.user ステートメントの更新後。
FLUSH ステートメントは、パスワードの変更を認識できるように、サーバーに許可テーブルをメモリに再ロードするように指示します。
の --skip-grant-options
誰でもパスワードなしですべての権限で接続できるようになります。これは安全ではないため、次のようにすることもできます。
使用 --skip-grant-tables と組み合わせて --スキップネットワーキング リモートクライアントが接続できないようにします。
から:参照: リセット-アクセス許可-汎用
ブルートフォースを使用せずに MySQL パスワードを直接回復することはできませんが、別の方法があるかもしれません。MySQL Workbench を使用してデータベースに接続し、資格情報を「ボールト」に保存したことがあれば、あなたは完璧です。
Windows では、資格情報は次の場所に保存されます。 %APPDATA%\MySQL\Workbench\workbench_user_data.dat - で暗号化されています 暗号化保護データ (追加のエントロピーなし)。復号化は簡単です:
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 スレッド 簡単な実装のソース + 実行可能ファイルの場合。
mysql が実行されているサーバーへの root アクセス権がある場合は、次のコマンドを使用して 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/
ダウンタイムなしで実行する
ターミナルで次のコマンドを実行して DBMS に接続します (root アクセスが必要です)。
sudo mysql -u root -p;
ターゲットユーザーのパスワード更新を実行します(私の例ではユーザー名は mousavi
そのパスワードは次のとおりである必要があります 123456
):
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';
この時点で、フラッシュを実行して変更を適用する必要があります。
FLUSH PRIVILEGES;
終わり!mysql サービスを停止または再起動することなく実行できました。
既存のユーザーを使用して Windows cmd から MySql にログインします。
mysql -u ユーザー名 -p
パスワードを入力する:****
次に、次のコマンドを実行します。
mysql> SELECT * FROM mysql.user;
その後、対応するユーザーの暗号化された md5 パスワードをコピーすると、Web で利用可能なオンライン パスワードを復号化するアプリケーションがいくつかあります。このパスワードを使用して復号化し、次回のログインに使用します。または、次のコマンドを使用してユーザー パスワードを更新します。
mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
次に、新しいパスワードとユーザーを使用してログインします。
Op の質問に対する厳密で論理的なコンピュータ サイエンス的な解釈では、次のことが要求されます。 両方 「MySQL ユーザー名を取得するにはどうすればよいですか?」 そして 「パスワード」 - 誰かにとっても役立つかもしれないと思いました または 解釈。言い換えると ...
1) MySQL ユーザー名を取得するにはどうすればよいですか?
または
2) パスワード
この後者の条件についてはすでに十分に対処されているようですので、ここでは取り上げません。以下は、「MySQL ユーザー名を取得するにはどうすればよいですか」という場合のみの解決策です。やあ。
mysql ユーザー名を見つけるには、mysql シェルから次のコマンドを実行します。
mysql.user からユーザーを選択します。
すべての mysql ユーザーのテーブルが出力されます。
ODBC がセットアップされている場合は、ODBC 構成ファイルからパスワードを取得できます。これは、Linux の場合は /etc/odbc.ini にあり、Windows の場合はレジストリの Software/ODBC フォルダーにあります (いくつかあります - 多少の探索が必要になる場合があります)。
ウィンドウユーザーの場合は、これに従ってください ガイド パスワードをリセットするには