MySQL 5.7 でルートパスワードを忘れた後に変更する方法の詳細なチュートリアル

MySQL 5.7 でルートパスワードを忘れた後に変更する方法の詳細なチュートリアル

序文

長い間、MySQL のアプリケーションおよび学習環境は MySQL 5.6 以前のバージョンであり、新しいバージョンである MySQL 5.7 の変更点や新機能には注目されていませんでした。今日、ルート パスワードを忘れてしまった人の対処を手伝っていたところ、以前の方法が機能しないことがわかりました。

具体的な状況は以下のとおりです。

ケース環境は以下のとおりです。

オペレーティング システム: Red Hat Enterprise Linux Server リリース 6.6 (Santiago)

データベースバージョン: 5.7.18 MySQL Community Server (GPL)

パスワードを忘れましたか? 間違ったパスワードを入力すると、次のエラー メッセージが表示されます。

[root@mytestlnx02 ~]# mysql -u ルート -p
パスワードを入力してください: 
エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード使用: YES)
[root@mytestlnx02 ~]#

MySQL サービスが開始されているかどうかを確認します。開始されている場合は、MySQL サービスをシャットダウンします。

[root@mytestlnx02 ~]# ps -ef | grep -i mysql
ルート 22972 1 0 14:18 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 23166 22972 0 14:18 pts/0 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
ルート 23237 21825 0 14:22 pts/0 00:00:00 grep -i mysql
[root@mytestlnx02 ~]# サービスmysqldを停止します
mysqldを停止しています: [ OK ]
[root@mytestlnx02 ~]#

MySQL my.cnf 構成ファイルを見つけて、次の情報を /etc/my.cnf (一部のバージョンでは /etc/mysql/my.cnf) に追加します。

[mysqld] 

スキップ許可テーブル

その後、MySQL を起動して MySQL に入り、ルート パスワードを変更しました。操作中に、 ERROR 1054 (42S22): Unknown column 'password' in 'field list'発生しました。ユーザー テーブルのテーブル構造を確認したところ、MySQL 5.7 ではユーザー テーブルに Password フィールドがなくなっていました。暗号化されたユーザー パスワードは、authentication_string フィールドに保存されます。

具体的な操作手順は以下のとおりです。

[root@mytestlnx02 ~]# サービスmysqldを起動します
mysqldを起動しています: [ OK ]
[root@mytestlnx02 ~]# mysql -u ルート 
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは4です
サーバーバージョン: 5.7.18 MySQL コミュニティサーバー (GPL)
 
Copyright (c) 2000, 2017, Oracle およびその関連会社。無断複写・転載を禁じます。
 
OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。
 
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
 
mysql> mysql を使用します。
テーブル名と列名の補完のためのテーブル情報の読み取り
-Aでこの機能をオフにすると起動が速くなります。
 
データベースが変更されました
mysql> ユーザーを更新し、パスワードを PASSWORD('Kd8k&dfdl023') に設定します
 -> ここで、user='root';
エラー 1054 (42S22): 「フィールド リスト」に不明な列「パスワード」があります
mysql> mysql.user を更新し、authentication_string=password('Kd8k&dfdl023') を設定します。user='root' です。
クエリは正常、1 行が影響を受け、1 つの警告 (0.00 秒)
一致した行: 1 変更された行: 1 警告: 1
 
mysql> 権限をフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)
 
mysql>終了

my.cnf ファイルで、先ほど追加した行「skip-grant-tables」をコメント化または削除します。 その後、MySQL サービスを再起動した後、コマンドset password=password('newpassword');を実行すると、問題は解決します。

[root@mytestlnx02 ~]# サービスmysqldを起動します
mysqldを起動しています: [ OK ]
[root@mytestlnx02 ~]# mysql -u ルート -p
パスワードを入力してください: 
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは4です
サーバーバージョン: 5.7.18
 
Copyright (c) 2000, 2017, Oracle およびその関連会社。無断複写・転載を禁じます。
 
OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。
 
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
 
mysql> mysql を使用します。
エラー 1820 (HY000): このステートメントを実行する前に、ALTER USER ステートメントを使用してパスワードをリセットする必要があります。
mysql> パスワードを password('Kd8k&dfdl023') に設定します。
クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.00 秒)

いくつかの関連情報を調べたところ、MySQL 5.7 にはセキュリティに関するいくつかの新機能があることがわかりました。

1. ユーザー テーブル mysql.user のプラグイン フィールドは空にできません。デフォルト値は mysql_old_password ではなく mysql_native_password です。古いパスワード形式はサポートされなくなりました。

2. パスワードの有効期限メカニズムを追加します。有効期限が切れたら、パスワードを変更する必要があります。変更しない場合は、パスワードが無効になるか、サンドボックス モードに入る可能性があります。パスワードの有効期限を有効にするかどうかは、パラメーター default_password_lifetime によって制御されます。

mysql> 'default_password_lifetime' のような変数を表示します。
+---------------------------+-------+
| 変数名 | 値 |
+---------------------------+-------+
| デフォルトパスワードの有効期間 | 0 |
+---------------------------+-------+
セット内の 1 行 (0.00 秒)
 
マイSQL>

3: パスワードのセキュリティ レベルとパスワードの複雑さの設定が追加されました。パラメータは次のとおりです。

mysql> 'validate_password%' のような変数を表示します。
+--------------------------------------+--------+
| 変数名 | 値 |
+--------------------------------------+--------+
| ユーザー名のパスワードチェックを検証 | オフ |
| パスワード辞書ファイルを検証する | |
| パスワードの長さを検証 | 8 |
| パスワードの大文字と小文字が混在するカウントを検証 | 1 |
| パスワードの検証回数 | 1 |
| パスワードポリシーの検証 | 中 |
| パスワードの特殊文字数を検証 | 1 |
+--------------------------------------+--------+
セット内の行数は 7 です (0.00 秒)

4. mysql_install_db を使用して初期化すると、デフォルトでランダムなパスワードが自動的に生成され、/var/log/mysqld.log に保存されます。root@localhost と mysql.sys@localhost 以外のアカウントは作成されず、テスト ライブラリも作成されません。

[root@mytestlnx02 mysql]# yum localinstall mysql-community-{server,client,common,libs}-* 
[root@mytestlnx02 mysql]# rpm -qa | grep -i mysql
mysql-コミュニティクライアント-5.7.18-1.el6.i686
mysql-コミュニティライブラリ-5.7.18-1.el6.i686
perl-DBD-MySQL-4.013-3.el6.x86_64
mysql-コミュニティサーバー-5.7.18-1.el6.i686
mysql-コミュニティ-共通-5.7.18-1.el6.i686
mysql-コミュニティ-ライブラリ-互換-5.7.18-1.el6.i686
[root@mytestlnx02 mysql]# サービスmysqldを開始
 
MySQLデータベースを初期化しています: [ OK ]
パスワード検証プラグインをインストールしています: [ OK ]
mysqldを起動しています: [ OK ]
[root@mytestlnx02 mysql]# 
[root@mytestlnx02 mysql]# grep '一時パスワード' /var/log/mysqld.log
2017-05-05T06:10:57.802143Z 1 [注記] root@localhost の一時パスワードが生成されます: w99s(m-q_ML:
 
mysql> ユーザーからユーザー、ホストを選択します。
+-----------+------------+
| ユーザー | ホスト |
+-----------+------------+
| mysql.sys | ローカルホスト |
| ルート | ローカルホスト |
+-----------+------------+
セット内の 2 行 (0.00 秒)

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • Windows 8.1 で MySQL5.7 のルート パスワードを忘れた場合の解決方法
  • MAC で Mysql5.7.10 のルートパスワードを変更する方法
  • Mysql5.7 のルートパスワードを忘れた場合の対処法 (シンプルで効果的な方法)
  • Mac で MySQL5.7 のルートパスワードを忘れた場合の解決方法
  • MySQL 5.7 のインストール手順とルートパスワードのリセット方法 (シェル スクリプト)
  • Mysql 5.7 でルート パスワードを忘れた場合やパスワードをリセットする場合の詳細な方法
  • Linux 上の MYSQL 5.7 でルート パスワードを取得する際の問題 (テスト済み、利用可能)

<<:  VMware 上の CentOS に Oracle12.2 をサイレント インストールする詳細なグラフィック チュートリアル

>>:  WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

推薦する

HTMLファイルで外部CSSファイルを導入する場合のパスの書き方について簡単にまとめます

1. 外部CSSファイルの基本スタイルをインポートする<link> タグを使用して外部ス...

HTML 内の CSS および JS リンクのバージョン番号 (キャッシュを更新)

背景検索エンジンで「.htaccess キャッシュ」というキーワードを検索すると、ウェブサイトのファ...

MySQLで行または列をソートする方法

方法:説明: どちらも達成できません:方法1: sp_product から sp.productid...

最新バージョンMySQL5.7.19 解凍版インストールガイド

MySQL バージョン: MySQL Community Edition (GPL) ------ ...

JavaScript マウスイベントのケーススタディ

マウスイベントマウスが特定の操作を実行すると、イベント オブジェクトが生成され、イベントがトリガーさ...

Navicat の MySQL へのリモート接続が遅い理由の詳細な説明

最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...

HTML 言語百科事典

123WordPress.com-HTML noscriptオブジェクトolオプションPパラントプレ...

MySQL の日付型の単一行関数コードの詳細な説明

MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

HTML における要素の水平および垂直中央揃えに関する議論

ページをデザインするときには、ログイン ウィンドウを中央に配置するなど、DIV を中央に配置し、ペー...

MySQL 8.0ドライバとAlibaba Druidバージョン間の互換性の問題を解決

この記事では主に、MySQL 8.0 ドライバーと Alibaba Druid バージョン間の互換性...

JavaScript の setTimeout() の使用法の概要

目次1. はじめに2. setIntervalとsetTimeoutの違い3.タイムアウトを設定する...

mysql5.7 のエンコーディングを utf8mb4 に設定する方法

最近、問題に遭遇しました。モバイル端末の絵文字や一部の絵文字は 4 バイトですが、UTF-8 は 3...

インライン要素スパンの最小高さの定義

span タグは HTML ウェブページを作成するときによく使用されますが、このタグの使い方がよくわ...

純粋な CSS 実装 (スクリプトなし) HTML コマンド スタイルのツールチップ テキスト プロンプト効果

実行プロセスを分析します。マウスをノードに移動して、ノードにツールチップ実装を開くための識別子 (...