MySQL 8.0.23のルートパスワードをリセットするための最適なソリューション

MySQL 8.0.23のルートパスワードをリセットするための最適なソリューション

この方法は2021年2月7日に編集されました。私が使用しているバージョンは8.0.23です。事件の原因は袁龍平教授から始まりました...それは教科書から始まりました。「MySQLセキュリティ管理と権限管理」という章があり、ルートアカウントの変更について言及しています

追記:この方法は、ルートパスワードを忘れたり、変更したり、間違えたりした人に適しています。

実用主義の精神で、MySQL データベース (現在は root としてログイン) に次のように入力しました。

ユーザーを更新します。authentication_string=MD5("123") を設定します。ここで、user = "root"、host = "localhost" です。
権限をフラッシュします。

ここで、現在のBaidu Googleチュートリアルについてお話しします。まず、生徒は自分のユーザーテーブル構造を見ることができます。ユーザーテーブルでは、一般的に、localhostのホスト列、ユーザー名rootのユーザー列、パスワードを保存するauthentication_string列の3つのフィールドが最も重要です。

desc ユーザー;

注: パスワードを保存するためのフィールドは、もはやパスワードではありません (古いバージョンではそうかもしれませんが、ルート パスワードを変更するための多くのチュートリアルでは、まだパスワードになっています)。 次に、私の新しいバージョンでは、ここではパスワード機能が適用されません。 教科書では MD5 暗号化が使用されています。 現在、多くの Baidu のものはまだ次のようになっています。 この方法はもう適用できません。

...パスワード = パスワード("123")...

上記のコードを入力した後、ログアウトしてサーバーを再起動し、新しいパスワード 123 でログインしようとしましたが、パスワードが間違っているというエラー メッセージが表示されました。

エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード使用: YES)

その後、私は3時間かけてBaidu Guideを検索し、パスワードを取得しようとしましたが、すべて失敗に終わりました。
24時間後、誤って元のauthentication_stringに保存されたパスワードを削除し、新しいパスワードを設定しました。これは私が自分でテストした実用的な情報です〜

1. パスワード不要のログイン

mysql ログインをパスワードフリー ログインに設定します (debian.cnf 設定の debian-sys-maint アカウントを使用してログインし、root パスワードを変更できるかどうかはわかりません。debian の権限では root を変更するのに十分ではないと思うので、root パスワードフリー ログインを選択しました。興味のある学生は試してみてください。この手順は主にサーバーに入るためのものです)。具体的な方法は次のとおりです。
設定ファイルを入力してください。私の設定ファイルは

phpMySQL の .conf ファイル

etc 設定を変更するには su 権限が必要なので、sudo を使用して開きます。もちろん、ホーム ディレクトリの設定をカスタマイズしていないため、すべてデフォルトです。この設定は人によって異なる可能性があり、自分で設定した可能性があります。次に、ターミナルで mysql --help を使用して、現時点で有効な設定を確認できます。もちろん、一度にすべてを見つけるのは簡単ではありません。たとえば、現在の設定ファイルは 2 番目の /etc/mysql/my.cnf にありますが、開いても設定オプションはありません。パスが 2 つあります。このパスは、"ネストされた" パスのように、実際の設定ファイルです。

ここに画像の説明を挿入

sudo vim mysqld.cnf

開いたら、[mysqld]の15行目あたりに次の行を挿入します。

ここに画像の説明を挿入

次に保存して vim を終了します。

2. authentication_stringパスワードをクリアする

実は、私はこのステップに誤って遭遇し、インターネット上のさまざまなコピーされたチュートリアルに惑わされました。今夜、ユーザー テーブルを調べていたところ、プラグイン フィールドがデフォルトで caching_sha2_password になっているのがわかりました。そのため、以前は md5 暗号化ではなく sha2 を使用すべきだったのではないかと考えました。
注: これは重要なステップです

ユーザーを更新します。set authentication_string=sha2("1234",32) where user = 'root';
権限をフラッシュします。

次に、ユーザー テーブルのルート データを確認すると、authentication_string の値が null になっていることがわかりました。この時点で、パスワードなしで実際にログインできるという予感がしました。構成ファイルに戻り (sudo が使用されていることに注意してください)、上記のコード行を構成ファイルに追加します。

スキップ許可テーブル

削除してMySQLサーバーを再起動してログインします

mysql -u ルート

予想通り、この時点でルート アカウントのパスワードはクリアされているので、本当のパスワードなしのログインはできますが、sha2 ダイジェスト アルゴリズムがパスワードを計算せずにパスワードをクリアするのはなぜかわかりません。誰か知っているはずです...

3. パスワードをリセットする

パスワードのリセットは簡単で、コードを 1 行書くだけです。

ALTER USER 'root'@'localhost' を mysql_native_password によって '123' で識別します。

ps: MySQL を初めてインストールした後は、パスワードがありません。サーバーに初めてログインするときは、sudo mysql -uroot でログインする必要がある場合があります。ログイン後、MySQL のルートパスワードを自分で設定します。設定方法は上記のコードとまったく同じです。

4. 終了

その後、新しいパスワードでMySQLに再度ログインできます。

mysql -u ルート -p123

5. 最後

  • 今回もルートパスワードを誤ってクリアしてしまいました。具体的な原理は不明です。例えば、sha2 を使用するとルートパスワードの authentication_string フィールドが NULL になるのはなぜでしょうか。プラグインが md5 の場合は、MD5 を使用するのが正しい可能性があります。sha1 の場合は、sha1 を試してください。公式ドキュメントを読んでいなかったので、全体のプロセスは非常に苦痛でした。したがって、厳密に言えば、これは質問投稿です。大物を待っています。ありがとうございます。
  • データベースの再起動、設定ファイル、debian-sys-maint アカウントの見つけ方、vim の編集など、詳しく説明されていない箇所が多数あります。質問があれば、お気軽にお尋ねください。私は csdn によく参加しており、いつもそこにいます。
  • システムはUbuntuで、Macの方法も同じはずです。重要なのは、MacのMySQL設定ファイルが最適化されているため、my.cnfを自分で作成する必要があることです。ほとんどの学生はホームディレクトリに置くはずなので、ファイルの場所は私のものとは異なっている必要があります。
  • おそらく、まだ 5.x などの古いバージョンを使用しているのでしょう。インターネット上の方法は依然として適用できるかもしれませんが、この方法は絶対に適用できません (ユーザー テーブルのパスワード フィールドが異なるため)。バージョンに注意してください。

これで、MySQL バージョン 8.0.23 のルート パスワードをリセットするための最適なソリューションに関するこの記事は終了です。MySQL 8.0.23 のルート パスワードをリセットする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 8.0.24 バージョンのインストールと設定方法のグラフィックチュートリアル
  • MySQL 8.0.24 リリースノートのいくつかの改善点
  • MySQLのMVCCマルチバージョン同時実行制御の実装
  • MySql8.0バージョンに接続するMyBatisの設定問題について
  • SeataがMySQL 8バージョンを使用できない問題を解決する方法
  • DBeaver を MySQL バージョン 8 以降に接続し、起こりうる問題を解決する方法の詳細な説明
  • IDEA で mysql8.0.3 と mybatis-generator を使用する際に発生するバグ
  • MySQL 5.x の文字化け問題の解決方法
  • CentOS 7 に MySQL 8.0.20 データベースをインストールするための詳細なチュートリアル
  • Mysql5.7 以降での ONLY_FULL_GROUP_BY エラーの解決方法
  • mysql8.0.19 winx64バージョンのインストール問題を解決する
  • Django 2.2 と PyMySQL バージョンの互換性の問題
  • MySQL 5.7 をバイナリモードでインストールし、Linux でシステムを最適化する手順
  • MySQL 8.0.18 のさまざまなバージョンのインストールとインストール中に発生した問題 (要点の要約)
  • MySQLのバージョンアップ方法を超詳しく解説

<<:  Nginx Httpモジュールシリーズにおけるautoindexモジュールの具体的な使用法

>>:  vue.js ルーターのネストされたルート

推薦する

MySQLの一般的なメモリ不足による起動失敗に対する完璧な解決策

1. MySQLが正常に起動しない場合は、エラーログ/var/log/mysql/error.log...

ウェブデザインの教育または学習プログラム

セクションコース内容営業時間1 ウェブデザインの概要2 2 HTML 基本タグとフォーマットタグ 2...

CSS を使用して 3 つのステップでショッピング モールのカード クーポンを作成する

今日は618日、主要なショッピングモールはすべてプロモーション活動を行っています。今日は、次のように...

ES6スプレッド演算子の使用例

目次スプレッド演算子とレスト演算子とは何ですか?配列スプレッド演算子残り演算子(コレクション関数)ス...

IdeaでTomcatを起動したときに複数のリスナーが報告される問題を解決する

エラーのスクリーンショット例外が発生した場所が見つかりません。解決策: リソースディレクトリにlog...

dockerでpdflatex環境を設定する方法

技術的背景Latex は文書作成、特に記事作成には欠かせないツールであり、必須のテキスト組版ツールで...

Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明

背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...

CSS で高さが不明な垂直中央揃えを実装する

この記事では主に、高さが不明な垂直方向の中央揃えを CSS で実装する方法を紹介し、皆さんと共有しま...

MySQL ツリー構造データベース テーブル設計

目次序文1. 基本データ2. 継承駆動設計3. 左右の値のエンコーディングに基づく設計4. ツリー構...

CSSの4種類の配置の違いの詳細な説明

フロントエンド開発でよく使われるCSSの配置方法は、位置決めには、通常位置決め、相対位置決め、絶対位...

DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

目次CentOS 8にDockerをインストールする1. yumを更新する2. containerd...

入力が完了したことを検出し、次のコンテンツを自動的に入力する HTML を実装する方法

前回の記事では、入力完了の簡単な検出を実現しましたが、今回はさらに一歩進んで、入力が完了した後に次の...

CentOS 7 で MySQL 5.7.23 をアップグレードする際の落とし穴と解決策

序文最近、CentOS 7 で MySQL 5.7.23 をアップグレードする際に落とし穴を発見しま...

vue3.0 でカルーセル コンポーネントをカプセル化する手順

目次1: カプセル化の考え方2. 包装工程3: ドットインジケーター4: 左と右のインジケーター5:...

MySQL での GROUP_CONCAT の使用例の分析

この記事では、例を使用して、MySQL で GROUP_CONCAT を使用する方法について説明しま...