MySQLのユーザー名とパスワードを取得するにはどうすればよいですか?


158

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

回答:


186

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

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

MySQLコンソールクライアントを-u rootオプションで起動します。

すべてのユーザーをリストします。

SELECT * FROM mysql.user;

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

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

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

MySQLプロセスを停止します

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

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


7
通常のユーザーをリセットするためにデーモンを再起動する必要はないと思います。「FLUSH PRIVILEGES」だけです。ユーザーパスワードを更新した後。--skip-grant-tablesはrootユーザーのパスワードのリセットにのみ必要です!これは通常、標準のユーザーリセットには推奨されません。
Amos Folarin 2013年

dpkg-reconfigure mysql-server-5.5コマンドを使用してルートMySQLパスワードをリセットすることの意味は何ですか?
phillipsK

@Xenph、なぜ「-u rootオプションでMySQLコンソールクライアントを起動する」と言うのですか?-uサーバーをで起動した場合は無視されるため、これを行う意味はまったくありません--skip-grant-tables
Pacerier

15
MySQL 5.7。*では、mysql.user呼び出されたpasswordに列がありませんauthentication_string。代わりに使用してください。
Adib Aroui

3
これ+ stackoverflow.com/a/35277160/1604601は非常に役に立った
Alien Life Form

42

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

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

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

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

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

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

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

    UPDATEFLUSH文それぞれが単一の行に記述する必要があります。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設定を見つけることができます。

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

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

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

これで、新しいパスワードを使用してrootとしてMySQLに接続できるはずです。


5
@ジェイク-答えてくれてありがとう。私はそれを高く評価したかったのですが、何らかの理由で評判ポイントのために、stackoverflowが許可しませんでした。あなたの説明は、「残念ながら、ユーザーのパスワードは取り返しのつかないです。それはあなたがいないかどうかを知る不可逆的である一方向ハッシュでハッシュ化された」他のすべては私が読むことを私だけにする方向与えたグーグルなぜ私の理解する鍵となった変更の私をパスワード。良い説明は、指示だけよりも洞察力があります。
dsdsdsdsd 2011

1
@jakeサービスリストでmysqlが見つかりません。何をすべきか教えてください。

1
なぜあなたのmysqld-nt代わりにmysqld
パセリエ2016

ところで、ファイル以外のオプションはあり--init-fileますか?(mysql.exeの--executeコマンドに似たもの。)
Pacerier

34

ここで最も有用な答えの改善:

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

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

FLUSH PRIVILEGES;パスワードを変更するには、mysql.userステートメントの更新後に使用します。

FLUSHステートメントは、サーバーに許可テーブルをメモリに再読み込みして、パスワードの変更を通知するように指示します。

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

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

from:リファレンス:resetting-permissions-generic


@ThinkingMonkey、これは、現在ログオンしているユーザーが変更する権限を持っていると想定していませんmysql.userか?しかし、多くの場合、そうではありません。
パセリエ2016

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スレッドでソース+実行可能ファイルの実行可能ファイルを確認できます。


2
これは完璧でした。MySQL Workbenchボールトに保存されているユーザーアカウントのパスワードを取得するために言及されたスレッドsnemarchにソースコードのあるexeがあります。ただし、ユーザーテーブルの読み取りまたは更新の権限を持っている場合は、これらの他の方法もおそらく機能します。
RobbZ 2015年

しかし、比較的言えば、Workbenchを使用している人はほとんどいません。
パセリエ2016

ここではワークベンチの格納されたユーザ名とパスワードの情報を回復するためのVisual Studioでビルド後に実行することができます別の実装は次のとおりです。github.com/wclear/MySQLWorkbenchPasswordViewer
bnp887

6

ダウンタイムなしでそれを行います

ターミナルで次のコマンドを実行してDBMSに接続します(ルートアクセスが必要です)。

sudo mysql -u root -p;

ターゲットユーザーの更新パスワードを実行します(この例ではmousavi、ユーザー名はで、パスワードはでなければなりません123456):

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

この時点で、変更を適用するためにフラッシュを実行する必要があります。

FLUSH PRIVILEGES;

できた!mysqlサービスを停止または再起動せずにそれを実行しました。


5

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/にあります。


3

既存のユーザーを使用して、windows cmdからMySqlにログインします。

mysql -u username -p
パスワードを入力してください:****

次に、次のコマンドを実行します。

mysql> SELECT * FROM mysql.user;

その後、対応するユーザーの暗号化されたmd5パスワードをコピーし、Webで利用可能ないくつかのオンラインパスワード解読アプリケーションがあります。この復号化パスワードを使用して、次回のログインに使用します。または、flowingコマンドを使用してユーザーパスワードを更新します。

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

次に、新しいパスワードとユーザーを使用してログインします。


0

ODBCが設定されている場合は、ODBC構成ファイルからパスワードを取得できます。これは、Linuxの場合は/etc/odbc.iniにあり、WindowsのレジストリのSoftware / ODBCフォルダにあります(いくつかあります-ある程度の検索が必要になる場合があります)。


0

ファイルを保存します。この例では、ファイルの名前はC:\ mysql-init.txtになります。ファイルを保存するための管理権限を尋ねる


-1

OPの質問の厳格な、論理的、コンピュータscience'ish解釈が必要とするだろうが、両方とも「どのように私は私のMySQLユーザ名取得ん」「パスワード」 -も、私はそれが誰かの役に立つかもしれないと思った対処OR解釈を。言い換えると ...

1)MySQLユーザー名を取得するにはどうすればよいですか?

または

2)パスワード

この後者の状態はすでに十分に対処されているようですので、気になりません。以下は、「MySQLユーザー名を取得する方法」のみの場合の解決策です。HIH。

mysqlユーザー名を見つけるには、mysqlシェルから次のコマンドを実行します...

mysql.userからユーザーを選択します。

すべてのmysqlユーザーのテーブルを出力します。


1
これは遅い回答です。ソリューションがすでに投稿または承認されているものと明らかに異なる場合にのみ投稿してください。この場合、特にあなたの答えが受け入れられたものと重複することはありません。
m.cekiera 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.